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是乙個...