警告 C26435
虚拟函数“symbol”应准确指定“virtual”、“override”或“final”之一(c.128)
C++ Core Guidelines
C.128: 虚函数应从 virtual、override 或 final 中明确指定一个
为了提高可读性,应明确说明虚拟行为类型,不要包含不必要的多余内容。 尽管可以同时使用多个虚拟说明符,但最好一次指定一个来强调虚拟行为最重要的方面。 以下重要性顺序显而易见:
- 纯虚函数;
- 显式重写其基的虚函数;
- 重写其基并在当前继承链中提供最终实现的虚函数。
说明
- 此规则跳过析构函数,因为这些函数具有有关虚拟的特殊规则。
- 警告显示在函数定义上,而不是声明上。 这可能令人困惑,因为定义没有虚拟说明符,但警告仍然适用。
代码分析名称:SINGLE_VIRTUAL_SPECIFICATION
示例:多余说明符
class Ellipse : public Shape {
public:
void Draw() override {
//...
}
};
class Circle : public Ellipse {
public:
void Draw() override final { // C26435, only 'final' is necessary.
//...
}
virtual void DrawCircumference() final { // C26435, should be neither 'virtual' nor 'final'.
//...
}
};