移动语义,右值引用和move

移动语义: 真实数据并未动,另外数据也没有复制一份

变换的是什么: vector中保持的指向数据的指针

把原来的指针置空,新的vector 指针指向原来指针指向位置.

右值引用:int = 42 ; int &&r = i *42. 右值引用重要性质:只能绑定一个将要销毁的对象.

int &&rr1 =42; int &&rr2 = rr1 错误: 变量是左值,因此我们不能将一个右值引用直接绑定到一个变量上,即使这个变量是右值得引用类型也不行.

Move函数:虽然不能将一个右值引用直接绑定到一个左值上,但我们可以显示地讲一个左值转换为对应的右值引用类型.

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

move告诉编辑器,我们有一个左值,但我们希望像一个右值一样处理它

使用右值传递的意义在于 我要调用可以区别 于非右值传递的构造函数,从而发生移动语义.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值