比较运算符不应为虚函数
6.8.12 ID_virtualComparison
重载的比较运算符很难正确触发 C++ 的多态机制,将其设为虚函数很可能引发意料之外的错误。
运算符 ==、!=、<、>、<=、>= 均受本规则限制。
示例:
class A {
....
public:
virtual bool operator == (const A&) const; // Non-compliant
};
class B: public A {
....
public:
virtual bool operator == (const B&) const; // Non-compliant, not overloaded
};