Share via


override-Bezeichner

Sie können das - Schlüsselwort verwenden, um override-Memberfunktionen festzulegen, die eine virtuelle Funktion in einer Basisklasse überschreiben.

function-declaration override;

Hinweise

override ist kontextbezogen und ist eine besondere Bedeutung, wenn sie nach der Deklaration einer Memberfunktion verwendet hat, Andernfalls ist kein reserviertes Schlüsselwort.

Beispiel

Verwendung override helfen, unbeabsichtigtes Vererbungsverhalten im Code zu verhindern.Im folgenden Beispiel wird veranschaulicht, wo, ohne override zu verwenden, das Memberfunktionsverhalten möglicherweise der abgeleiteten Klasse nicht absichtlich verwendet wurde.Der Compiler gibt keine 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) override; // DerivedClass::funcC(double) has a different
                                               // parameter type than BaseClass::funcC(int), so
                                               // DerivedClass::funcC(double) is a new member function

};

Wenn Sie override verwenden, generiert der Compiler Fehler, anstatt, neue Memberfunktionen automatisch 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 überschrieben werden können und dass Klassen nicht geerbt werden können, verwenden Sie das - Schlüsselwort Abschließen.

Siehe auch

Referenz

final-Bezeichner

C++-Schlüsselwörter

Weitere Ressourcen

C++ Type Names