Larry,
Welcome to the world of pointers, like in C. You can NEVER pass the object, you can only pass a reference (pointer) to it. A variable like oObj is NOT the object, it is a pointer to the object.
The variable references a location in memory where the object exists. If you pass this reference by value then the called routine gets the pointer to the object and can access the memory location. If you pass the variable by reference then the called routine gets a poitner to the variable (which is a poitner to the object) so the called routine can only manipulate the location of the pointer and not the object directly.