Warnung C26435

Die Funktion "Symbol" sollte genau eine von "virtual", "override" oder "final" (c.128) angeben.

C++ Core Guidelines

C.128: Virtuelle Funktionen sollten genau eine der virtuellen Funktionen, außer Kraft setzen oder endgültig angeben.

Um die Lesbarkeit zu verbessern, sollte die Art des virtuellen Verhaltens klar und ohne unnötige Redundanz angegeben werden. Obwohl mehrere virtuelle Bezeichner gleichzeitig verwendet werden können, ist es besser, jeweils einen zu angeben, um den wichtigsten Aspekt des virtuellen Verhaltens hervorzuheben. Die folgende Reihenfolge der Bedeutung ist ersichtlich:

  • einfache virtuelle Funktion;
  • virtuelle Funktion, die ihre Basis explizit außer Kraft setzt;
  • virtuelle Funktion, die ihre Basis überschreibt und die endgültige Implementierung in der aktuellen Vererbungskette bereitstellt.

Hinweise

  • Diese Regel überspringt Destruktoren, da sie spezielle Regeln hinsichtlich der Virtualität haben.
  • Warnungen werden für Funktionsdefinitionen und keine Deklarationen angezeigt. Es kann verwirrend sein, da Definitionen keine virtuellen Bezeichner haben, aber die Warnung ist weiterhin geeignet.

Codeanalysename: SINGLE_VIRTUAL_SPECIFICATION

Beispiel: Redundanter Bezeichner

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

class Circle : public Ellipse {
public:
    void Draw() override final { // C26435, only 'final' is necessary.
        //...
    }
};

Siehe auch

C.128: Virtuelle Funktionen sollten genau eine der virtuellen Funktionen, außer Kraft setzen oder endgültig angeben.