次の方法で共有


警告 C26433

関数は override でマークされる必要があります

C++ Core Guidelines

C.128: 仮想関数は、virtual、override、final のうちの 1 つだけを指定する必要があります

コンパイラでは、仮想関数がその基本をオーバーライドすることを明示するように要求されません。 override を指定しないと、クラス階層で仮想指定が変更された場合に、メンテナンス中に軽度の問題が発生する可能性があります。 また、読みやすさが低下し、インターフェイスのポリモーフィックな動作もわかりにくくなります。 関数が overrideとして明確にマークされている場合、コンパイラはインターフェイスの一貫性を確認し、実行時に問題が発生する前に問題を特定するのに役立ちます。

メモ

このルールは、デストラクターには適用されません。 デストラクターには独自の仮想性に関する指定があります。

このルールでは、それ自体が特殊な種類の仮想指定子である final として明示的にマークされた関数にはフラグは設定されません。

警告は、宣言ではなく関数定義に表示されます。 定義に仮想指定子が含まれていないため、紛らわし場合がありますが、これは従来通り適切な警告です。

コード分析名: OVERRIDE_EXPLICITLY

例: 暗黙的なオーバーライド

class Shape {
public:
    virtual void Draw() = 0;
    // ...
};

class Ellipse : public Shape {
public:
    void Draw() { // C26433
        //...
    }
};

関連項目

C.128: 仮想関数は、virtual、override、final のうちの 1 つだけを指定する必要があります