Rule INT#027 - Türeyen sınıfta oveload edilmiş sanalllık mekanizması (base class's virtual function explicitly as virtual)


C++'da türemiş sınıflar (derived class) virtual fonksiyonu override ederek sanallık mekanizmasına dahil olurlar ve override ettiği fonksiyonda virtual olur.

override edilmiş cry sanal fonksiyonu

Yukarıda görüldüğü gibi Animal sınıfının (base class) cry() sanal fonksiyonu Dog sınıfı tarafından override edilerek Dog sınıfı da sanallık mekanizmasına dahil edilmiştir. Standartlar bize açık açık bildirmesekte Dog sınıfının cry() fonksiyonunun sanal olacağını belirtir. Ama bizim bunu explicit olarak yazmamız kod okuyan açısından daha doğru olacaktır.

Kodu bu hale getirmek daha doğru olacaktır

Aynı mantık bir sonraki türetme içinde geçerlidir.WathDog sınıfı da cry fonksiyonunu override ederek sanallık mekanizmasına dahil olmuştur ve bu fonksiyonu virtual void cry() şeklinde tanımlaması daha doğru olacaktır.