右值引用&&

动机

对象之间的拷贝太费时,即将销毁的对象不必拷贝,仅仅移动就行。

右值引用

回忆左值是要用表达式的地址,右值是要表达式的值。

左值引用是&,右值引用是&&。左值不能指右值,右值不能指左值。

int i = 42;
int &r = i;
int &&rr = i; //xxx,右值不能指左值。

int &r2 = i*2; //xxx,左值不能指右值

const int& r3 = i*2;  //正确,当临时对象绑定
int && r4 = i*2;

左值和右值的生命期

看下临时对象是右值,就知道左值比右值活得长啊。

所以右值引用绑定到临时对象。变量是左值,绑定不了。

std::move函数

可以把左值通过这个函数转成右值,用右值引用绑定

int &&rr3 = std::move(rr1);

移动完就不要用rr1了,指不要用它的值,因为不知道什么时候它就没了。(primer 544)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值