移动构造函数与移动赋值运算符

本文详细介绍了C++中的移动构造函数和移动赋值运算符,阐述了它们在资源管理中的作用,如何通过右值引用实现对象的高效转移,并讨论了何时编译器会自动生成这些操作以及何时它们会被删除。移动构造函数和移动赋值运算符在避免不必要的拷贝、提高性能方面起到关键作用,同时强调了移动后源对象的有效性与限制。
摘要由CSDN通过智能技术生成

定义:新标准的一个主要的特性是可以移动而不拷贝对象的能力,一个典型的例子是在分配新内存的过程中,将元素从就旧内存拷贝到新内存中是不必要的(先拷贝元素,在释放旧内存),再者,如果一个类中含有IO类和unique_ptr类那么只能使用移动构造函数
右值引用&&
定义:右值引用只能绑定到一个即将销毁的对象上,
右值引用只能绑定到一个即将销毁的对象(临时对象)
1,所引用的对象即将被销毁
2,该对象没有其他用户
由以上两点可知,使用右值引用的代码可以自由接管所引用对象的内存管理权。
左值与右值的区分
一般而言左值是一个对象的值,右值是一个对象的名字。
右值类型 绑定到右值引用

要求转换的表达式       例如:  i*42;
字面常量 (字)
返回非引用类型的函数  (非)
算术运算符    (算)
关系运算符     (关)
位运算符       (位)
后置递增,递减运算符 (后)

左值类型 绑定到左值引用

变量             (变)
返回引用的函数       (引)
赋值运算符          (赋)
下标运算符          (下)
解引用运算符         (解)
前置递增,递减运算符     (前)

口决:字非算位关后右,变引下赋解前左

int i=42; //42
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值