Warnung C26435
Die virtuelle Funktion "Symbol" sollte genau eine von "virtual", "override" oder "final" (c.128) angeben.
C++ Core Guidelines
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.
Name der Codeanalyse: 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.
//...
}
virtual void DrawCircumference() final { // C26435, should be neither 'virtual' nor 'final'.
//...
}
};