c++中常出現error為:非常量引用的初始值必須為左值。即說明你引用不是左值,可能為右值。那麼左值與右值的區別是什麼呢?
看能否對表示式取位址,如果能,則為左值;否則為右值。
例如:
int i = 5;int &a = i;
這時編譯通過,但是如果 int &a = 5;這樣就出錯了
這個5和i有什麼區別,答案就是5是右值,i是左值,為什麼,參考上面的話。
回到你的**
你用乙個函式的返回值給非常量引用初始化
那麼函式的返回值是啥呢
在函式返回的時候,系統將返回值存放至eax暫存器,然後回到主函式中,eax暫存器存放的就是返回值,而這裡這個返回值就是乙個數值,不能對其取位址,所以這是乙個右值
c 中的左值與右值的區別
左值 lvalue 和右值 rvalue 是 c c 中乙個比較晦澀基礎的概念,不少寫了很久c c 的人甚至沒有聽過這個名字,但這個概念到了 c 11 後卻變得十分重要,它們是理解 move forward 等新語義的基礎。左值與右值這兩概念是從 c 中傳承而來的,在 c 中,左值指的是既能夠出現在...
C 中左值與右值
讓我們先看看一些常見的左值和右值舉例 int var 6 var is a lvalue const int var 6 var is a nonmodifiable lvalue char str hello,world str is a nonmodifiable lvalue hello,wo...
C 中左值與右值
讓我們先看看一些常見的左值和右值舉例 int var 6 var is a lvalue const int var 6 var is a nonmodifiable lvalue char str hello,world str is a nonmodifiable lvalue hello,wo...