C 11 右值引用

2021-06-21 10:34:59 字數 890 閱讀 5751

消除兩個物件互動時不必要的物件拷貝,節省運算儲存資源,提高效率。

能夠更簡潔明確地定義泛型函式。

1.右值引用

int a;

a = 1; // here, a is an lvalue

上述的a就是乙個左值。

c++11中左值的宣告符號為」&」,為了和左值區分,右值的宣告符號為」&&」

printreference (const string& str)

printreference (string&& str)

string me( "alex" );

printreference( me ); // 呼叫第一函式,引數為左值常量引用

printreference( "alex" ); 呼叫第二個函式,引數為右值引用。

#include void process_value(int& i)

void process_value(int&& i)

int main()

執行結果 :

lvalue processed: 0

rvalue processed: 1

例2:void process_value(int& i)

void process_value(int&& i)

void forward_value(int&& i)

int main()

執行結果:

lvalue processed: 0

rvalue processed: 1

lvalue processed: 2

c 11 右值引用

右值引用 是一種復合型別,跟c 的傳統引用很類似。為更準確地區分兩種型別,我們把傳統的c 引用稱為 左值引用 而使用 引用 這一術語時,我們的意思同時包含兩種引用 左值引用和右值引用。右值引用的行為跟左值引用類似,不同之處在於 右值引用可以繫結到臨時量 右值 而 非const的 左值引用卻不能繫結到...

C 11右值引用

c 11中引入的乙個非常重要的概念就是右值引用。理解右值引用是學習 移動語義 move semantics 的基礎。而要理解右值引用,就必須先區分左值與右值。對左值和右值的乙個最常見的誤解是 等號左邊的就是左值,等號右邊的就是右值。左值和右值都是針對表示式而言的,左值是指表示式結束後依然存在的持久物...

c 11 右值引用

最近看了祁宇大哥的深入應用c 11中的用c 11提高程式效能部分,對右值引用做乙個小讀後感悟及總結,其實右值引用沒想象的那麼神秘 c 11 增加了乙個新的型別,右值引用,標記為t c 11中所有的值必屬於左值 將亡值 純右值,其中將亡值和純右值屬於右值,比如,非引用返回的臨時變數 運算表示式產生的臨...