3 回答

TA貢獻1807條經驗 獲得超9個贊
引用沒有自己的地址。盡管可以將引用實現為指針,但是并不需要或不能保證。
C ++常見問題說得最好:
與指針不同,一旦將引用綁定到對象,就不能將其“重新定位”到另一個對象。引用本身不是對象(它沒有身份;使用引用的地址會為您提供引用對象的地址;請記?。阂檬瞧湟脤ο螅?。
另請參閱我的答案,以獲取有關引用與指針的不同之處的完整列表。

TA貢獻1829條經驗 獲得超13個贊
NO。無法獲取引用的地址。
那是因為引用不是對象,它是別名(這意味著它是對象的另一個名稱)。
int x = 5;
int& y = x;
std::cout << &x << " : " << &y << "\n";
這將打印出相同的地址。
這是因為“ y”只是對象“ x”的另一個名稱(別名)。

TA貢獻1828條經驗 獲得超4個贊
ISO標準說得最好:
不應有對引用的引用,也不應有引用數組,也不能有指向引用的指針。
我不喜歡很多人在這里使用的邏輯,因為您不能將引用“保證無論如何都只是一個指針”,所以您不能這樣做。正如int x可能只是一個沒有地址的處理器寄存器,但在& x使用時神奇地成為一個內存位置一樣,編譯器仍然可能允許您想要的內容。
過去,許多編譯器的確可以完全滿足您的要求,例如
int x, y;
int &r = x;
&r = &y; // use address as an lvalue; assign a new referent
我剛剛檢查了一下,GCC會編譯它,但是帶有強烈的警告,結果程序被破壞了
- 3 回答
- 0 關注
- 789 瀏覽
添加回答
舉報