Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit dem Schlüsselwort "Außerkraftsetzen" können Sie Memberfunktionen festlegen, 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 ein reserviertes Schlüsselwort.
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 das letzte Schlüsselwort.