存在拷贝构造函数或拷贝赋值运算符时,不应缺少析构函数
5.1.8 ID_missingDestructor
三个紧密相关的函数:
- 拷贝构造函数
- 拷贝赋值运算符
- 析构函数
当这三个函数中的任何一个函数被定义时,其他两个函数也需要被定义,详见“Rule of three”。
示例:
class A { // Non-compliant, missing destructor
public:
A();
A(const A&);
A& operator = (const A&);
};
应明确定义析构函数:
class A { // Compliant
public:
A();
A(const A&);
A& operator = (const A&);
~A(); // Destructor
};