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