「引用繫結到引用」理解探析

2022-04-05 12:58:00 字數 483 閱讀 1466

在學習《c++ primer》容器相關章節的時候,看到這樣一句話:「c.back() :返回容器 c 的最後乙個元素的引用。如果 c 為空,則該操作未定義」(429頁),但是在這句話之前,有這樣一段**:

list::reference last2 = ilist.back();

1int i=12;2

int &j=i;

3int &k=j;

45 cout《首先編譯執行都正常,證明語法無誤;

其次執行結果,i、j、k的結果都是12;

最後也是最關鍵的觀察:在行號為1的位置設定斷點,然後單步步過,觀察三個變數的位址即&i &j &k,會發現,首先為i分配了記憶體,記憶體位址出現,同時j和k也有乙個位址「0xcccccccc」(這個位址的了解參考但一旦單步步過到第四行,j和k的位址都變為了i的位址,也就是說,現在i、j和k共享一段記憶體,引用繫結完畢,也就是說,可以將乙個引用繫結到另乙個引用,最終結果是i有了兩個別名。

Rust 未繫結可變引用 和繫結可變引用的區別

在rust documents api 中 我們經常會看到如下的寫法 繫結可變引用 let f mut string from what something 可變繫結 let mut f string from what something 這兩種語法的區別是很大的。比如在如下 中 fn main ...

引用傳遞理解

c 中說值傳遞,應用傳遞,物件傳遞我的理解一直有乙個誤區,最近犯了個低階的錯誤,記錄一下 1 class cla1 2 6 poco.teststaticchange poco poco.value after change va 7 poco.testchange poco poco.valeu ...

error 非常量引用只能繫結到左值

今天遇到乙個關於c 引用的錯誤,說實話以前確實一直沒注意到過引用還有這個規則 1 已啟動生成 專案 opengl,配置 debug win32 1 game.cpp 1 d 18482 visual studio source repos opengl opengl game.cpp 55 erro...