1.右值引用的介绍
常规引用是左值引用,而C++11引入了新的引用类型——右值引用,也就是必修绑定到右值的引用,通过&&来获取右值的引用。
右值:可以提供数据值的数据(不可取地址),是一个可以生成临时对象的表达式或者是一个不可以被修改的值。
2.表示
引用:别的变量的别名,不占用额外内存空间
左值引用只能引用左值;const左值引用可以左值,也可以引用右值(因为右值通常是不可以改变的值,所以用const左值引用是可以的);右值只能引用右值;左值可以通过move(左值)来转化为右值,继而使用右值引用。
int main()
{
int a=10;
//左值引用,只可引用左值
int &r1=a;
//右值引用,只可引用右值
int &&r2=10;
//int &&r3=a;//error
//const即可引用左值,也可引用右值
const int &r4=a;
const int &r5=10;
//右值引用可以引用move()之后的左值
int &&r6=move(a);
return 0;
}
3.性质
左值持久,右值短暂
因右值引用只能绑定到临时对象:
所以:①所引用的对象即将要被销毁
②该对象没有其他用户