类的拷贝操作
2023年12月30日 2023年12月30日
三/五法则
3个基本操作用以控制类的拷贝: 拷贝构造函数, 拷贝赋值运算符, 析构函数
用以控制类的拷贝的5个完整操作: 拷贝构造函数, 拷贝赋值运算符, 析构函数 + 移动构造函数, 移动赋值运算符
本节依旧围绕3个基本操作, 描述它们之间的关系
设计类之拷贝操作的入口: 析构函数
如果需要特殊处理, 才会给出析构函数的定义
如在析构函数体内释放动态内存
相应地, 也有申请动态内存的逻辑, 如拷贝和赋值
需要析构函数的类也需要拷贝和赋值操作
如果一个类需要自定义析构函数, 几乎可以肯定它也需要自定义拷贝赋值运算符和拷贝构造函数
需要拷贝操作的类也需要赋值操作, 反之亦然
如果需要为类的每个对象分配一个独有的, 唯一的序号, 我们需要给出拷贝构造函数的定义
而赋值时, 序号不会发生改变: 还需给出拷贝赋值运算符的定义
析构函数不参与其中
如果一个类需要给出拷贝构造函数的定义, 几乎可以肯定它也需要一个拷贝赋值运算符
反之亦然
如果一个类需要给出拷贝赋值运算符的定义, 几乎可以肯定它也需要一个拷贝构造函数
无论是需要拷贝构造函数还是需要拷贝赋值运算符, 都不必然意味着也需要析构函数