簡體   English   中英

C++ 試圖重新分配對實例對象的引用

[英]C++ trying to reassign a reference to instance object

試圖了解如何在 C++ 中阻止引用的重新分配。 我知道在重新分配 C++ 引用變量中,引用本身不能被重新分配,但是 refree 的值正在改變。 但我想了解這對於實例對象是如何工作的

對於下面的代碼

class A{};

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

想了解以上是否合法以及這里發生了什么。

如果它合法,那么我無法理解它是如何工作的。 我們是否只是在更改變量“aobj”所持有的值? 然后與'aref'相同,現在指的是對象'bobj'

如果它是非法的,它是否被視為試圖重新分配引用?

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

aref = bobj;

bobj分配給aobj 參考aref不會重新設置; 它仍然指的是aobj 但是現在aobjbobj的副本,假設合理的賦值語義。 換句話說,就像你說的一樣:

aboj = bobj;

如果aref指的是aobj ,則aref在大多數情況下(根據定義)的行為與aobj完全相同。

特別是, aref = bobj具有與aobj = bobj完全相同的效果。 沒有更多了。 aref不會突然停止引用aobj並開始引用bobj只是因為你做了aobj = bobj ,所以aobj = bobj也沒有這種效果。

試圖了解如何在C ++中阻止對引用的重新分配。 我了解,正如在重新分配C ++參考變量中一樣,不能重新分配參考本身,但是refree的值正在更改。 但我想了解它如何用於實例對象

對於下面的代碼

class A{};

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

想了解以上內容是否合法以及這里發生了什么。

如果它合法,那么我將無法理解它是如何工作的。 我們是否只是在更改變量'aobj'持有的值? 然后,將其與“ aref”相同,即現在指向對象“ bobj”

如果它是非法的,是否被視為試圖重新分配參考?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM