常亮左值引用可以繫結右值的原因

2021-10-04 17:41:49 字數 678 閱讀 5375

為什麼常量左值引用可以繫結到右值?

根據該問題的幾位答主的回答,整理成個人的理解。

允許引用繫結非左值的初衷在於「讓傳值還是傳引用成為函式本身的細節,呼叫者不用去關心」,這一點,在const引用上可以達到,而非const引用,呼叫者無法不關心傳值還是傳引用,所以乾脆在c++ 2.0禁止掉了。

如下示例,如果允許非常量左值引用繫結右值:ss型別與rr不同,rr引用無法直接繫結傳遞的引數ss,那麼會生成乙個用ss初始化的int型臨時變數,然後非const引用rr繫結了該臨時變數,之後修改了臨時變數,而不會按預期修改ss。

fortran語言是formula translation的縮寫,意為「公式翻譯」。它是為科學、工程問題或企事業管理中的那些能夠用數學公式表達的問題而設計的,其數值計算的功能較強。

從示例中可以看出,支援常量左值引用繫結右值非常有必要。

從示例可以看出:當常量左值引用繫結右值時,編譯器根據常亮左值引用的作用域,在棧或堆上新建臨時變數,其生命週期與常量左值引用保持一致。那麼倒推一下,因為常量左值引用不可修改的屬性,允許其繫結匿名變數也是可以的。

左值 右值 左值引用 右值引用

2015 06 01 15 07 404人閱讀收藏 舉報 c 11 5 一 c 中的左值和右值 誤區 左值位於等號左邊,右值位於等號右邊。c 11中的定義 左值表示式表示的是乙個物件的身份 在記憶體中的位置 而右值表示式表示的是物件的值 內容 左值和右值都是針對表示式而言的,左值是持久的,右值是短暫...

左值 左值引用 右值 右值引用

1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...

左值 左值引用 右值 右值引用

1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...