警告 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'.
        //...
    }
};

另请参阅

C.128: 虚函数应从 virtual、override 或 final 中明确指定一个