考慮以下幾點:引用變量等於另一個引用變量?
int someA = 1;
int someB = 2;
int &a = someA;
int &b = someB;
a = b; // what happens here?
這裏發生的與參考?只是好奇。
考慮以下幾點:引用變量等於另一個引用變量?
int someA = 1;
int someB = 2;
int &a = someA;
int &b = someB;
a = b; // what happens here?
這裏發生的與參考?只是好奇。
讓兩個參考變量彼此相等本身並不是錯誤。這可能令人困惑。但是,您的代碼所做的不是設置對另一個引用的引用,而是將_A
的值從1
更改爲2
,這就是_B
中的內容。
您只能設置一個參考ONCE [初始化位置]。一旦它被初始化,它就會變成原始變量的別名。
你可以這樣做:
int &a = _A;
int &b = _A;
和
a = b;
將價值1
存入_A
,它的值已經1
。
我正在尋找的答案。 – Placeable
這裏沒有錯誤,但我想我可能知道你對此感到困惑。該引用不會被重新分配,但其引用內容的值將被重新分配。
所以,當你做a = b;
你基本上這樣說:_A = _B
,因爲引用是一個別名。
引用永遠不能像指針一樣重新分配。
引用也不能爲空。
你不能在函數外部有語句。
a = b; //compile error?
這是一個語句,因此必須在功能:
int _A = 1;
int _B = 2;
int &a = _A;
int &b = _B;
int main()
{
a = b; //compile error? No. Now it compiles.
// As 'a' and 'b' are references.
// This means they are just another name for an already existing variable
// ie they are alias
//
// It means that it is equivalent to using the original values.
//
// Thus it is equivalent too:
_A = _B;
}
現在它編譯。
這裏沒有編譯錯誤。 (請參閱http://ideone.com/RR4vcz) –
請參閱http://stackoverflow.com/questions/9293674/can-we-reassign-the-reference-in-c瞭解您在此處完成的工作。 – KBart
@OliCharlesworth:這個代碼是UB,因爲它使用爲實現保留的名稱。 :) – ybungalobill