警告 C26433
功能应该用
override
标记
C++ Core Guidelines
C.128: 虚函数应从 virtual、override 或 final 中明确指定一个
编译器不需要明确说明虚函数会覆盖其基类。 如果不指定 override
,当虚拟规范在类层次结构中发生更改的情况下,可能会在维护期间引起微妙的问题。 这还会降低可读性并使接口的多态行为不那么明显。 如果某函数被明确标记为 override
,编译器就能检查接口的一致性,并帮助在运行时出现问题之前发现问题。
说明
此规则不适用于析构函数。 析构函数有自己的虚拟特性。
该规则不会标记显式标记为 final
的函数,它本身就是一种特殊的虚拟说明符。
警告显示在函数定义上,而不是声明上。 这可能令人困惑,因为定义没有虚拟说明符,但警告仍然正确。
代码分析名称:OVERRIDE_EXPLICITLY
示例:隐式重写
class Shape {
public:
virtual void Draw() = 0;
// ...
};
class Ellipse : public Shape {
public:
void Draw() { // C26433
//...
}
};