3.C++表达式

版权声明: 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 &);              ---> 拷贝构造函数另一种形式

形参是非常量左值引用,仅实参是非常量左值时调用该函数

猜你喜欢

转载自blog.csdn.net/dadan1314/article/details/82428520