试图了解如何在C ++中阻止引用的重新分配。我理解为Reassigning C++ reference variables 引用本身不能重新分配,但是refree的值正在改变。但我想了解它如何用于实例对象
以下代码
class A{};
A aobj;
A& aref = aobj;
A bobj;
aref = bobj;
想要了解以上是否合法,以及这里发生了什么。
如果它合法,那么我无法理解它是如何工作的。我们只是改变变量' aobj'持有?然后就像' aref'现在提到对象' bobj'
如果它是非法的,它被视为重新分配参考?
答案 0 :(得分:1)
这是合法的。这是做什么的:
aref = bobj;
将bobj
分配给aobj
。引用aref
未重新定位;它仍然指aobj
。但是现在aobj
是bobj
的副本,假设合理的赋值语义。换句话说,它就像你说过的那样:
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