Consider the two cases:
- Object& obj = *getObjectPtr();
- Object obj = *getObjectPtr();
What is the difference between these two in C++?
Consider the two cases:
Object& obj = *getObjectPtr();Object obj = *getObjectPtr();What is the difference between these two in C++?
 
    
    Line (1) is semantically equivalent to Object *obj_p = getObjectPtr(), and then using *obj_p.  The reference behaves like a pointer, but without pointer syntax.  More examples here: http://en.wikipedia.org/wiki/Reference_%28C++%29
Line (2) will cause a new Object to be created, and the Object at the memory address getObjectPtr() to be copied into it via (probably) Object's copy constructor.
 
    
    Object& obj = *getObjectPtr(); - obj will hold a reference to the original object that is returned by getObjectPtr().
Object obj = *getObjectPtr(); - obj will hold a copy of the original object that is returned by getObjectPtr().
 
    
    