1. 左值右值概念:
左值:等号左边;被分配内存 或 有名字;
右值:等号右边;临时量 或 无名字 或 不被分配内存;
2. 左值引用、右值引用 例子
int a = 1; // a为左值;1为右值.
int& b = a; // b是a的左值引用.
int&& c = 1; // c是1的右值引用.
int&& d = a; // 错误! 左值不能绑定右值引用
int& e = 1; // 错误! 右值不能绑定左值引用
const int& f = 1; // 正确! 相当于:int temp = 20; const int& f = temp;
3. std::move()
move() : 得到右值, 左值转换为右值。
例子:
int a = 1;
int&& b = a; // 错误!左值不能绑定右值引用
int&& c = std::move(a); // 正确!将a转换为右值.