系统中的动态资源、文件句柄(socket描述符、文件描述符)是有限的,在类中若涉及对此类资源的操作,但是未做到妥善的管理,常会造成资源泄露问题,严重的可能造成资源不可用,如申请内存失败、文件句柄申请失败;或引发未定义行为,进而引起程序崩溃、表现出意外的行为、损坏数据,或者可能看似正常工作但在其它情况下出现问题。
三之法则和五之法则可以很好地解决上述问题。它们帮助开发者理解和管理类的拷贝控制操作,避免常见的资源泄露、重复释放等问题,并优化程序的性能。零之法则关注类的特殊成员函数的声明和使用。在实际开发中,应根据类的具体需求来决定是否需要自定义这些特殊的成员函数。
学在前面
1、深拷贝和浅拷贝
深拷贝和浅拷贝是两种不同的对象复制方式,它们涉及到对象的内存管理和数据成员的处理方式。若类拥有资源类(指针、文件句柄)的成员,类的对象间进行复制时,若资源重新进行分配,为深拷贝;否则为浅拷贝。以下以类中包含指针数据成员为例进行描述。
1.1 概念
深拷贝:复制后新对象和旧对象的指针成员占用不同的内存空间。
浅拷贝:复制后新对象和旧对象的指针成员占用相同的内存空间。
1.2 特征对比
深拷贝
- 复制对象的所