左值(lvalue)這一術語**於c語言,用來指代那些可以用在賦值表示式左側的東西,具名物件、在棧和堆上分配的物件,或者其他物件的成員,總之就是又確定儲存空間的東西。而術語右值(rvalue)也是源自c語言,指的是只能在賦值表示式右側出現的東西,如字面值和臨時物件。
只能繫結到左值,不能繫結到右值的引用是左值引用。只能繫結到右值,而不能繫結到左值的引用是右值引用。
舉個例子:
int a = 5; //在這裡面a就是左值,5就是右值。5不能在等號的左邊,但是a可以在等號的右邊,例如下面的賦值語句
int b = a;//在該賦值語句中,a和b都是左值,也就是說左值不代表不能在右側,但是右值一定不能在左側。
其中5這類字面值就是右值,還有一類右值,就是返回值這樣的臨時物件,舉一例子:
int test()
int main
其中test()的返回值也是右值,不能放在等式的左側。
接下來舉乙個關於左值引用和右值引用的例子:
int & i =42;//錯誤,因為42是右值,而i是左值引用,所以i不能繫結到42,下面這樣就可以
int j = 42;
int &i = j;//正確,j是左值,所以i可以繫結到j;
int && i = 42;//正確,&&表示右值引用,所以i可以繫結到右值42
int j = 42;
int &&i = j;//錯誤,因為j是左值,而i是右值引用,所以不能繫結到j。
左值 右值 左值引用 右值引用
2015 06 01 15 07 404人閱讀收藏 舉報 c 11 5 一 c 中的左值和右值 誤區 左值位於等號左邊,右值位於等號右邊。c 11中的定義 左值表示式表示的是乙個物件的身份 在記憶體中的位置 而右值表示式表示的是物件的值 內容 左值和右值都是針對表示式而言的,左值是持久的,右值是短暫...
左值 左值引用 右值 右值引用
1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...
左值 左值引用 右值 右值引用
1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...