写在前面
c++的拷贝控制
主要内容
合成析构函数
每当一个类未定义析构函数的时候,编译器会合成一个析构函数。
合成析构函数为空。
析构函数分为两个部分:函数体和析构部分。
函数体为空,在析构函数体执行完毕之后,成员会被自动销毁。成员是在析构函数体之外的隐含的析构阶段被析构的。需要析构函数的类也需要拷贝和赋值操作
因为一个类需要自定义析构函数,这个类肯定是需要拷贝构造函数和赋值操作符进行资源的合理的拷贝和管理。
拷贝赋值操作符
自赋值需要可以正常工作。
赋值操作符组合了析构函数和拷贝构造函数的工作。
先判断传入的对象和自身是否是一样的如果是一样的就直接返回
如果不是一样的就先深拷贝被拷贝对象的资源
接着释放自身对象的资源
再将深拷贝得到的资源赋值给自身对象。
为什么拷贝构造函数的参数是&
因为如果拷贝构造函数不是传入引用,是值传递那么在进入拷贝构造函数的时候就会由于函数传参值传递再次调用拷贝构造函数,直接造成函数的无限循环调用。