2015-10-16 55 views
-1

我是一個學習C++的SWE,並且有一個關於引用的問題 - 抱歉,如果它太簡單。參考文獻總是被解釋爲「不變的」,因爲它們「總是指向相同的目標」。否則,你將無法分配任何新的東西。例如:C++引用是否總是指向同一個對象?這個具體案例呢?

int x;   // an int 
int &refX = x; // reference to x 
refX = 5;  // here, a new `int` object gets instantiated and overwrites x 

所以,refX不再指向同一個對象!我想一個更正確的定義是它總是指向相同的地址位置。它是否正確?在這種情況下,它的行爲非常類似於const *,除非不必使用*運算符。我錯過了什麼嗎?

謝謝!

+6

它仍指向它所在的內存中的相同位置。在那個地方的價值被覆蓋,參考沒有改變。 – mszymborski

+1

在這種情況下,'x = 5'和'refX = 5' – smac89

+0

我想我狹隘地理解你試圖提問的問題,但並不認爲你的解釋太準確。你不能改變地址的一個變量,在任何時候,無論如何,只要你願意,你可以改變它指向的內容。如果你正在談論被指向的地址或變量本身的地址,可能只是澄清一下? –

回答

3

我用來考慮引用作爲另一個對象的別名。如果您將此應用於人員,則別名是暱稱。

例如,如果您有:

Person Robert; 
Person& Bob = Robert; 

你只有一個人,但你有時叫他羅伯特有時叫他鮑勃。但他仍然是同一個人。

試圖讓鮑勃的地址進入這只是讓它更難。我覺得在抽象層次上考慮引用更容易 - 同一事物的兩個名稱。

相關問題