-
左值 右值
左值:可以放等号左边的,可以取地址
右值:不可以放等号左边,不能取地址 -
纯右值 将亡值
右值又分为纯右值和将亡值
纯右值:运算表达式产生的临时变量、不和对象关联的原始字面量、非引用返回的临时变量、lambda表达式等都是纯右值。
将亡值:将亡值是指C++11新增的和右值引用相关的表达式,通常指将要被移动的对象、T&&函数的返回值、std::move函数的返回值、转换为T&&类型转换函数的返回值,将亡值可以理解为即将要销毁的值,通过“盗取”其它变量内存空间方式获取的值,在确保其它变量不再被使用或者即将被销毁时,可以避免内存空间的释放和分配,延长变量值的生命周期,常用来完成移动构造或者移动赋值的特殊任务。
- 左值引用
左值引用: type &name = exp;
int a = 5;
int &b = a; //b是左值引用 - 右值引用
右值引用:type &&name = exp;
int a = 5;
int &&b = std::move(a);