版权声明: https://blog.csdn.net/dadan1314/article/details/82428520
左值和右值
左值:有标识,并能取地址;
右值:纯右值---函数返回值非引用类型,原始字面量,运算表达式,lambda表达式,类型转换函数返回值;
将亡值---要移动的对象,move的返回值,返回右值引用的函数返回值,转换为右值引用的转换函数返回值 ;
以上有待考证
std::move
将左值转换为右值引用,相当于
static_cast<T&&>(lvalue);
PS:C++11,#inclue<utility>
移动构造函数
T Object(T &&);
形参是非常量右值引用(需要实现移动语义,修改临时变量的值,不能是常量右值),实参是非常量右值
T Object(const T &); ---> 拷贝构造函数
形参是常量左值引用,实参是常量右值时调用该函数
T Object(T &); ---> 拷贝构造函数另一种形式
形参是非常量左值引用,仅实参是非常量左值时调用该函数