override-Bezeichner
Sie können die Außerkraftsetzung Schlüsselwort (keyword) verwenden, um Memberfunktionen festzulegen, die eine virtuelle Funktion in einer Basisklasse überschreiben.
Syntax
function-declaration override;
Hinweise
Außerkraftsetzung ist kontextsensitiv und hat eine besondere Bedeutung nur, wenn sie nach einer Memberfunktionsdeklaration verwendet wird. Andernfalls handelt es sich nicht um eine reservierte Schlüsselwort (keyword).
Beispiel
Verwenden Sie Außerkraftsetzung , um versehentliches Vererbungsverhalten in Ihrem Code zu verhindern. Das folgende Beispiel zeigt, wo das Verhalten der Memberfunktion der abgeleiteten Klasse möglicherweise nicht beabsichtigt wurde, ohne außer Kraft zu setzen. Der Compiler gibt keinen Fehler für diesen Code aus.
class BaseClass
{
virtual void funcA();
virtual void funcB() const;
virtual void funcC(int = 0);
void funcD();
};
class DerivedClass: public BaseClass
{
virtual void funcA(); // ok, works as intended
virtual void funcB(); // DerivedClass::funcB() is non-const, so it does not
// override BaseClass::funcB() const and it is a new member function
virtual void funcC(double = 0.0); // DerivedClass::funcC(double) has a different
// parameter type than BaseClass::funcC(int), so
// DerivedClass::funcC(double) is a new member function
};
Wenn Sie die Außerkraftsetzung verwenden, generiert der Compiler Fehler, anstatt neue Memberfunktionen im Hintergrund zu erstellen.
class BaseClass
{
virtual void funcA();
virtual void funcB() const;
virtual void funcC(int = 0);
void funcD();
};
class DerivedClass: public BaseClass
{
virtual void funcA() override; // ok
virtual void funcB() override; // compiler error: DerivedClass::funcB() does not
// override BaseClass::funcB() const
virtual void funcC( double = 0.0 ) override; // compiler error:
// DerivedClass::funcC(double) does not
// override BaseClass::funcC(int)
void funcD() override; // compiler error: DerivedClass::funcD() does not
// override the non-virtual BaseClass::funcD()
};
Um anzugeben, dass Funktionen nicht außer Kraft gesetzt werden können und dass Klassen nicht geerbt werden können, verwenden Sie die endgültige Schlüsselwort (keyword).
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für