[C/C++]类的默认函数

类的五个默认函数主要是:拷贝构造、拷贝赋值、析构、移动构造、移动赋值

  • ①移动构造和移动赋值:在类的5大函数中(拷贝构造、拷贝赋值、析构、移动构造、移动赋值)这2种是性能相关的,决定了类对象的构造、移动的性能。编译器会对一个类自动的生成移动构造函数,前提是其所有非static成员,都顺利的拥有了对应的移动处理函数(这里的移动,指的其实是递归的移动处理);
  • ②一般析构函数总会定义,但是另外四个函数一般都保持统一(要么都自定义,要么都使用default,让编译器生成),注意,使用default,只是让编译器尝试生成,如果不符合条件,编译器会生成delete的函数,而不是默认的函数;
  • ③通常定义了函数,并不代表最终会匹配到,一些容器库,对于类的移动构造函数由严格的要求,如果不符合,即便是右值引用,也不会匹配到移动构造函数(当然这个实际编码中可以加打印来确认具体走了哪个函数)。通常,移动构造函数是不会有任何异常的,仅仅是资源的转移,所以后面一般会加上noexcept关键字;
  • ④进一步,为了代码的充分控制和后续维护,通常不使用default的版本的5大默认函数。即要么delete,要么使用自定义,尽量减少使用default;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值