我讀到C++參考變量和某處我發現這一點:「引用永遠不能引用另一個對象」是什麼意思?
const引用的聲明是多餘的,因爲參考是永不會被提及的另一個對象。
這是什麼意思?
這裏,例如,我可以更改基準參照對象:
void p(int& i) {
int a = 7,c = 0;
i = a;
}
那麼,這是否意味着「參考永不會被引用到另一個對象」?
在此先感謝。
我讀到C++參考變量和某處我發現這一點:「引用永遠不能引用另一個對象」是什麼意思?
const引用的聲明是多餘的,因爲參考是永不會被提及的另一個對象。
這是什麼意思?
這裏,例如,我可以更改基準參照對象:
void p(int& i) {
int a = 7,c = 0;
i = a;
}
那麼,這是否意味着「參考永不會被引用到另一個對象」?
在此先感謝。
這意味着,給定這個代碼
int a;
int b;
int& ref = a;
的是,一旦你初始化ref
指a
,有沒有辦法可以讓它指b
或任何其他變量。
對引用所做的任何更改都會反映在您用來初始化它的變量上。引用(本身甚至不是一個適當的對象)保持不變。
此外,只有引用的對象保持活動狀態,引用纔可用。
太棒了!謝謝 ! – Billie
在你的例子中,你沒有改變i
指向的東西。它將i
的值更改爲值a
。如果你在哪裏顯示地址i
,你會發現它與a
不同。
如果你int &r = x;
這意味着r
指x
每次你改變r
時候,你真的改變x
。同樣,每次更改x
時,通過r
都可以看到更改。
現在,「參考永遠不能引用另一個對象」的意思是,一旦你做了int &r =x
,就不能使r
參考y
。你可以做r = y;
,但是所做的一切就是設置x
等於y
。這並不意味着更改r
之後將更改y
也不意味着通過r
可以看到y
的更改。
想象它最簡單的方法是在三分球方面講:
// reference // equivalent pointer code
int& r = a; int* const r = &a;
r = b; *r = b;
function(r); function(*r);
也就是說,在聲明的那一刻,參考聲明別名到現有對象的內存位置。然後,任何引用的使用都等同於取消引用該內存位置的指針。
現在,什麼const參考?那麼這將是:
// reference // equivalent pointer code
int& const r = a; int* const const r = &a;
int const& const r = a; int const* const const r = &a;
這使得冗餘相當明顯,我相信。
also http://stackoverflow.com/questions/728233/why-are-references-not-reseatable-in-c – billz
查看引用的最佳方式是作爲他們引用的內容的不同名稱: int i; int&r = i;'在這裏,'r'是'i'的不同名稱。理解「r」不*指向'i'是至關重要的。 'r' *是*'i'。它不可能是'我'以外的任何東西。這就是爲什麼文字說「永遠不可能引用另一個對象」。 –