左值右值來自於c語言。
左值:用來指代可以用在賦值表示式作則的東西,具體命名的物件、在記憶體中棧和堆上分配的物件,或者其他物件成員,總之就是有確定儲存空間的東西。
右值:指的是只能在賦值表示式右側出現的東西,如字面值和臨時物件。
左值引用只能被繫結到左值,不能被繫結到右值:
int a = 1;
int &b = a;//正確,因為a是乙個左值
int &c = 5;//錯誤,因為5是乙個字面值,是右值
但是一直能夠將乙個右值繫結到const左值引用上:
int const &d= 100;//正確
這個特殊的設定是為了能將臨時物件作為引用引數傳遞給函式,:
void reverse(srd::string const &str)
reverse(「howareyou」);//正確,這是乙個將臨時物件隱式的轉換成乙個左值引用。
void reverse(std::string &str)
reverse(「hello」); //error:invalidinitialization of non-const reference of type …
但是在標準中只有繫結到右值,而不能繫結到左值的右值引用:
int&& a = 0;//右值引用,宣告正確
int b = 1;
int && c = b;//錯誤,因為b是乙個左值
C 中的左值右值
對於 c 中的左值和右值,我們通常的說法是 當乙個物件被用作右值的時候,用的是物件的值 內容 當物件被用作左值的時候,用的是物件的身份 在記憶體中的位置 這句話來自於 c primer 第五版 第 121 頁,那麼,對於這句話,該作何理解呢?下面我想來談談我的看法 iso c 03規定表示式必須是左...
c 左值 右值 右值引用 左值引用
c 裡一切值必須屬於左值 右值兩者之一。左值 一切變數 包括用const修飾的變數 物件 包括引用都屬於左值 右值 一切字面值 可以是巨集 臨時無名物件 函式返回值 表示式 如a n 說明一下 函式返回值,返回的是某乙個型別的值,並不是返回變數。左值並不是說能放在 左邊的值就是左值 雖然用const...
c 左值 右值 左值引用 右值引用
在c語言中,左值認為是賦值語句的左側,右值認為是賦值語句的右側。在c 中,意義稍有不同。c 中,每乙個表示式會產生乙個左值或者右值,相應的,該表示式也就被稱作 左值表示式 右值表示式 乙個左值表示式的求值結果是乙個物件或者是乙個函式。左值可以當右值使用,而右值不能當左值使用。c prime 中這麼簡...