Saf bir virtual
işlev, doğrudan somutlaştırılacak türetilmiş bir türde uygulanmalıdır, ancak taban türü yine de bir uygulamayı tanımlayabilir. (Çağrılarak tam kapsamlı adı kullanarak (erişim izinleri buna izin varsa) Türetilmiş sınıf açıkça temel sınıf uygulaması çağırabilir A::f()
- eğer örnekte A::f()
olduğu public
veya protected
). Gibi bir şey:
class B : public A {
virtual void f() {
// class B doesn't have anything special to do for f()
// so we'll call A's
// note that A's declaration of f() would have to be public
// or protected to avoid a compile time problem
A::f();
}
};
Başımın en üstünde düşünebileceğim kullanım örneği, az ya da çok makul bir varsayılan davranış olduğunda, ancak sınıf tasarımcısı varsayılan tür davranışların sadece açıkça çağrılmasını istiyor. Ayrıca, türetilmiş sınıfların her zaman kendi çalışmalarını gerçekleştirmelerini istediğiniz, ancak ortak bir işlevsellik seti çağırabileceğiniz durum da olabilir.
Dil tarafından izin verilse de, yaygın olarak kullandığım bir şey olmadığını unutmayın (ve yapılabileceği gerçeği, çoğu C ++ programcısını, hatta deneyimli olanları şaşırtıyor gibi görünüyor).
deported
. (ortak dosya adlandırma uygulamalarına başvurmak için .inl veya .cpp dosyalarında).