C 11新特性之右值引用

2022-09-13 22:39:22 字數 734 閱讀 3472

int i = 10;

// 右值引用-右值

int&& rr = 42;

int&& rr1 = std::move(i);

//const左值引用--右值

const int& c = 42;

//左值引用--左值

int& lr = rr;

//注意:右值引用也是變數,所以rr是左值。

string a = "aaa";

string&& r = std::move(a);

r = "rrr";

cout << a << endl;

/*output:

rrr*/

2.作為move constructor 和 move assignment的引數。

string a("aaa");

string b(std::move(a));

cout << "move construct b from a, a:" << a << "\tb:" << b << endl;

string c("ccc");

c = std::move(b);

cout << "move assignment c from b, b:" << b << "\tc:" << c << endl;//可見,string的拷貝賦值裡,對b和c的資源指標做了swap

c 11新特性之右值引用

c 11 增加了乙個新的型別,稱為右值引用 r value reference 標記為 t 在介紹右值引用型別之前先要了解什麼是左值和右值。左值是指表示式結束後依然存在的持久物件,右值是指表示式結束時就不再存在的臨時物件。乙個區分左值與右值的便捷方法是 看能不能對表示式取位址,如果能,則為左值,否則...

C 11新特性之右值引用

右值 只能出現在operator 右邊的 通常臨時物件 將亡值 字面值常量 純右值 是右值 類的臨時物件是乙個右值,臨時變數一定被當成右值,因為臨時物件建立之後不會再被使用,所以直接把右值資料引用給別的變數,有時候乙個左值在後面不會被用到,那麼就可以使用move語義把左值轉成右值。右值引用和左值引用...

C 11之 右值引用

最近在看cocos2dx的源 發現了乙個模板類有乙個奇怪的語法 inline refptr refptr other 剛開始一陣犯暈,乙個型別ref和乙個似乎是形參的other與操作會得出乙個什麼?顯然這種理解是錯誤的。還有一種含義是右值引用,表示形參是乙個右值。左值 右值 int a 0 a是乙個...