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 行,因为子类中的虚拟函数与基类中的虚拟函数不匹配。