C ++试图重新分配对实例对象的引用

时间:2017-06-25 14:52:21

标签: c++ reference

试图了解如何在C ++中阻止引用的重新分配。我理解为Reassigning C++ reference variables 引用本身不能重新分配,但是refree的值正在改变。但我想了解它如何用于实例对象

以下代码

class A{};

A aobj;  
A& aref = aobj;
A bobj; 
aref = bobj;  

想要了解以上是否合法,以及这里发生了什么。

如果它合法,那么我无法理解它是如何工作的。我们只是改变变量' aobj'持有?然后就像' aref'现在提到对象' bobj'

如果它是非法的,它被视为重新分配参考?

3 个答案:

答案 0 :(得分:1)

这是合法的。这是做什么的:

aref = bobj;

bobj分配给aobj。引用aref未重新定位;它仍然指aobj。但是现在aobjbobj的副本,假设合理的赋值语义。换句话说,它就像你说过的那样:

aboj = bobj;

答案 1 :(得分:1)

如果aref引用aobj,则aref在大多数情况下(根据定义)的行为与aobj完全相同。

特别是aref = bobj具有与aobj = bobj完全相同的效果。没有更多的东西。 aref并没有突然停止引用aobj而只是因为您bobj开始引用aobj = bobj,所以aobj = bobj也没有这种效果。

答案 2 :(得分:0)

这里aref引用指向A类对象。一旦分配了该引用,就无法将其重新分配给任何其他对象。

aref = bobj;

使用上面的语句,我们将先前创建的A类对象(aObj)分配给新对象,简而言之,它转换为aobj = bobj

有关更多详细信息,请参阅Can reference be reassigned