复制构造函数(copy constructor)是一种特殊的构造函数,具有单个形参,该形参(常用const修饰)是对该类类型的引用。当定义一个新对象并用一个同类型对象对它进行初始化时使用。
析构函数(destrustor)是构造函数的互补:当对象超出作用域或动态分配的对象被删除时,将自动应用析构函数。用于完成资源回收。
合成复制构造函数的行为是,执行逐个成员初始化,将新对象初始化为原对象的副本。
有些类需要禁止复制,必须显式声明其复制构造函数为private
如果想要连友元和成员中的复制也禁止,就可以声明一个private复制构造函数但不对其定义。
大多数类应定义复制构造函数和默认构造函数
如果类需要析构函数,则它也需要赋值操作符和复制构造函数,这是“三法则”。
编译器总是会合成一个析构函数。合成析构函数按对象创建的逆序撤销每个非static成员。
析构函数是成员函数,它的名字是在类名字之前加上(~),没有返回值,没有形参。
复制指针以后,多个指针指向同一个对象,但是它们的行为看来非常不同。副本独立于原版,可以改变一个副本而不改变另一个。地址值是可区分的,但指针指向同一基础对象。
直接复制指针可能导致悬垂指针。
定义智能指针的通用技术是采用一个使用计数(use count),智能指针类将一个计数器与类指向的对象相关联。