1基本定义
在C++中左值顾名思义是赋值运算符左边的值,右值是赋值运算符右边的值。
1.1
int x=10;
int y=x+10;
其中x是左值,实际存储在内存中的,有地址的,即可以取地址的&x
10是右值,临时的在内存中是不存储的,是不能取地址的,
2.移动语义
c++11中引入了移动语义,支持右值引用
int&& z=10;
int y=std::move(z);
Student&& ss=std::move(s);
Student stu=std::move(ss); //触发移动构造函数
注意:虽然 z 是右值引用,但它有名字,所以在表达式里表现为 左值。
3.函数返回
函数返回中除了返回引用和指针是左值类型,其他都是返回的临时对象右值(栈对象,函数结束作用域结束,栈对象被销毁)。