CWARN.OVERRIDE.CONST
函数重写由于 const 限定符不匹配而失败
CWARN.OVERRIDE.CONST 检查器会查找子类中虚拟函数与基类中其相应函数之间的 const 限定符不匹配的实例。
漏洞与风险
如果子类中的虚拟函数不同于基类中的相应函数,将不会发生重写。通常,子函数用于重写基函数,因此无法达到设计意图。
漏洞代码示例
复制
class Base {
virtual void foo() const { }
virtual void bar() = 0;
};
class Child : public Base {
void foo() {}
void bar() const {}
};
在此示例中,Klocwork 标记了第 7 和 8 行,因为子类中的虚拟函数与基类中的虚拟函数不匹配。