我是 C 新手,我正在研究參考的概念。
我已經研究過這樣一個事實,即一旦定義和初始化,參考不應被分配給其他東西,C 入門上的參考描述指出,一旦你將參考系結到一個物件,那么你就不能更改參考的物件是有界的。
我對這種說法感到困惑。我在我的計算機上嘗試了以下代碼,編譯器既沒有報告警告也沒有報告錯誤。
int a = 2;
int b = 4;
int &ref = a;
cout << "ref = " << ref << endl;
ref = b;
cout << "ref = " << ref << endl;
在我的電腦上,編譯通過,列印輸出,一個是2,另一個是4,完全沒有問題。
我對參考的這個概念感到困惑,這是我們不應該更改參考系結到的物件的條件,還是我們不能更改參考系結到的物件?
PS 即使是 C 入門的第 58 頁也演示了參考參考新物件的示例,并且書中說可以這樣做。像這樣:
int i = 42;
int *p;
int *&r = p;
r = &i; // isn't this changing r to an new object?
*r = 0;
uj5u.com熱心網友回復:
那么您不能更改參考系結到的物件。
我對這個說法感到困惑
該宣告試圖說,不能修改參考以參考另一個物件。可以修改參考的物件。
當賦值的左手運算元是參考時,您通過參考間接,并分配被參考物件的值。
ref = b;
ref仍然指的是由 命名的物件a。該物件被此分配修改。賦值后,值為a4。
r = &i; // isn't this changing r to an new object?
r仍然指的是由 命名的物件p。該物件被此分配修改。賦值后,p指向i。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444256.html
上一篇:運行時錯誤:“ListNode”型別的空指標內的成員訪問-克隆鏈接串列
下一篇:C :將元素插入到std::map<MyStruct>中,其中MyStruct只能聚合初始化并包含const唯一指標
