《C++Primer》 3.14 复制控制

复制构造函数(copy constructor)是一种特殊的构造函数,具有单个形参,该形参(常用const修饰)是对该类类型的引用。当定义一个新对象并用一个同类型对象对它进行初始化时使用。

析构函数(destrustor)是构造函数的互补:当对象超出作用域或动态分配的对象被删除时,将自动应用析构函数。用于完成资源回收。

合成复制构造函数的行为是,执行逐个成员初始化,将新对象初始化为原对象的副本。

有些类需要禁止复制,必须显式声明其复制构造函数为private

如果想要连友元和成员中的复制也禁止,就可以声明一个private复制构造函数但不对其定义。

大多数类应定义复制构造函数和默认构造函数

如果类需要析构函数,则它也需要赋值操作符和复制构造函数,这是“三法则”。

编译器总是会合成一个析构函数。合成析构函数按对象创建的逆序撤销每个非static成员。

析构函数是成员函数,它的名字是在类名字之前加上(~),没有返回值,没有形参。

复制指针以后,多个指针指向同一个对象,但是它们的行为看来非常不同。副本独立于原版,可以改变一个副本而不改变另一个。地址值是可区分的,但指针指向同一基础对象。

直接复制指针可能导致悬垂指针。

定义智能指针的通用技术是采用一个使用计数(use count),智能指针类将一个计数器与类指向的对象相关联。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值