C++ primer第五版_拷贝控制

0、拷贝初始化发生的情况:使用=初始化,非引用传参,返回一个对象,列表初始化数组或聚合类

1、编译器可以绕过拷贝构造函数,但拷贝构造函数必须是存在且可访问的(GCC是这样,但VS可以是private的)

2、赋值运算符通常应该返回一个指向其左侧运算对象的引用,这样可以与内置类型的赋值保持一致

3、一般需要析构函数来释放资源的类,通常也需要自己定义拷贝和赋值操作来分配资源

4、可以通过将拷贝控制成员定义为=default来显示地要求编译器生成合成的版本

5、可以将拷贝构造函数和拷贝赋值运算符定义为=delete来阻止拷贝

6、对于删除了析构函数的类型,虽不能定义该类的变量,但可以动态分配这种类型的对象,但是不能释放

7、当不能拷贝、赋值或销毁类的成员时,类的合成拷贝控制成员就被定义为删除的

8、c+11之前,类通过将其拷贝构造函数和拷贝赋值运算符声明为private,但友元和成员函数仍可以拷贝对象,为了阻止拷贝,可以只声明拷贝控制成员,但不定义它们

9、编写赋值运算符的最好办法是在销毁左侧运算对象资源之前拷贝右侧运算对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值