考虑两种情况:
Object& obj = *getObjectPtr();
Object obj = *getObjectPtr();
这两者在C ++中有什么区别?
答案 0 :(得分:4)
行(1)在语义上等同于Object *obj_p = getObjectPtr()
,然后使用*obj_p
。引用的行为类似于指针,但没有指针语法。这里有更多示例:http://en.wikipedia.org/wiki/Reference_%28C++%29
第(2)行将导致创建新Object
,并将内存地址Object
中的getObjectPtr()
复制通过(可能)Object
的复制构造函数。
答案 1 :(得分:1)
Object& obj = *getObjectPtr();
- obj会将reference保存到getObjectPtr()
返回的原始对象。
Object obj = *getObjectPtr();
- obj将保存getObjectPtr()
返回的原始对象的副本。