Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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.