引用vs设置局部变量

时间:2013-12-17 00:08:28

标签: c++ pointers reference

考虑两种情况:

  1. Object& obj = *getObjectPtr();
  2. Object obj = *getObjectPtr();
  3. 这两者在C ++中有什么区别?

2 个答案:

答案 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()返回的原始对象的副本。