Aracılığıyla paylaş


override Tanımlayıcısı

Bir temel sınıftaki bir sanal işlevi geçersiz kılan üye işlevleri atamak için override anahtar sözcüğünü kullanabilirsiniz.

Sözdizimi

function-declaration override;

Açıklamalar

geçersiz kılma , bağlama duyarlıdır ve yalnızca üye işlev bildiriminden sonra kullanıldığında özel bir anlamı vardır; aksi takdirde ayrılmış anahtar sözcük değildir.

Örnek

Kodunuzda yanlışlıkla devralma davranışını önlemeye yardımcı olması için geçersiz kılmayı kullanın. Aşağıdaki örnekte, geçersiz kılma kullanılmadan türetilmiş sınıfın üye işlevi davranışının amaçlanmamış olabileceği durumlar gösterilmektedir. Derleyici bu kod için herhangi bir hata yaymaz.

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
};

Geçersiz kılma kullandığınızda, derleyici sessizce yeni üye işlevleri oluşturmak yerine hatalar oluşturur.

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()
};

İşlevlerin geçersiz kılınamayacağını ve sınıfların devralınamayacağını belirtmek için son anahtar sözcüğünü kullanın.

Ayrıca bkz.

final Tanımlayıcısı
Anahtar Sözcükler