左值引用是對乙個左值進行引用的型別,右值引用則是對乙個右值進行引用的型別。
左值引用和右值引用都是屬於引用型別。無論是宣告乙個左值引用還是右值引用,都必須立即進行初始化。而其原因可以理解為是引用型別本身自己並不擁有所繫結物件的記憶體,只是該物件的乙個別名。
左值引用是具名變數值的別名,而右值引用則是不具名(匿名)變數的別名。
左值引用:
int
&a =2;
// 左值引用繫結到右值,編譯失敗, err
int b =2;
// 非常量左值
const
int&c = b;
// 常量左值引用繫結到非常量左值,編譯通過, ok
const
int d =2;
// 常量左值
const
int&e = c;
// 常量左值引用繫結到常量左值,編譯通過, ok
const
int&b =2;
// 常量左值引用繫結到右值,程式設計通過, ok
「const 型別 &」為 「萬能」的引用型別,它可以接受非常量左值、常量左值、右值對其進行初始化。
右值引用,使用&&表示:
int
&& r1 =22;
int x =15;
int y =18;
int&& r2 = x + y;
通常情況下,右值引用是不能夠繫結到任何的左值的。
int c;
int&& d = c;
//err
測試示例:
#include
using
namespace std;
void
process_value
(int
& i)
//引數為左值引用
void
process_value
(int
&& i)
//引數為右值引用
intmain()
左值 右值 左值引用 右值引用
2015 06 01 15 07 404人閱讀收藏 舉報 c 11 5 一 c 中的左值和右值 誤區 左值位於等號左邊,右值位於等號右邊。c 11中的定義 左值表示式表示的是乙個物件的身份 在記憶體中的位置 而右值表示式表示的是物件的值 內容 左值和右值都是針對表示式而言的,左值是持久的,右值是短暫...
左值 左值引用 右值 右值引用
1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...
左值 左值引用 右值 右值引用
1 左值和右值的概念 左值是可以放在賦值號左邊可以被賦值的值 左值必須要在記憶體中有實體 右值當在賦值號右邊取出值賦給其他變數的值 右值可以在記憶體也可以在cpu暫存器。乙個物件被用作右值時,使用的是它的內容 值 被當作左值時,使用的是它的位址。2 引用 引用是c 語法做的優化,引用的本質還是靠指標...