Warnung C26433
Funktion sollte mit
override
C++ Core Guidelines
Es ist nicht erforderlich, dass der Compiler eindeutig angibt, dass eine virtuelle Funktion ihre Basis überschreibt. Wenn sich die virtuelle Spezifikation jemals in der Klassenhierarchie ändert, kann dies override
zu subtilen Problemen während der Standard Tenance führen. Es verringert auch die Lesbarkeit und macht das polymorphe Verhalten einer Schnittstelle weniger offensichtlich. Wenn eine Funktion eindeutig als override
gekennzeichnet ist, kann der Compiler die Konsistenz der Schnittstelle überprüfen und Probleme erkennen, bevor sie sich zur Laufzeit manifestieren.
Hinweise
Diese Regel gilt nicht für Destruktoren. Destruktoren haben ihre eigenen Virtualitätsspezifischen.
Die Regel kennzeichnet keine explizit als gekennzeichneten final
Funktionen, die selbst eine besondere Vielfalt von virtuellen Bezeichnern sind.
Warnungen werden für Funktionsdefinitionen und keine Deklarationen angezeigt. Es kann verwirrend sein, da Definitionen keine virtuellen Bezeichner haben, aber die Warnung ist immer noch korrekt.
Codeanalysename: OVERRIDE_EXPLICITLY
Beispiel: Implizites Überschreiben
class Shape {
public:
virtual void Draw() = 0;
// ...
};
class Ellipse : public Shape {
public:
void Draw() { // C26433
//...
}
};