Ben foo
sınıfında D
bildirilen, ancak sanal işaretli değilse, o zaman aşağıdaki kodu (bakılmaksızın d
dinamik türden) D
içinde foo
uygulanmasını çağırır beklenebilir. Ancak, aşağıdaki programda, durum böyle değildir. Ancak, aşağıdaki programda bu durum söz konusu değildir. Bunu açıklayan var mı? Sanal bir işlevi geçersiz kılarsa, bir yöntem otomatik olarak sanal mıdır?C++, sanal bir işlevi geçersiz kılarsa, otomatik olarak sanal bir işlev midir?
E
static_cast gereksiz - 'D & D = * static_cast (&e);' D & d = e 'eşdeğerdir;' nedeniyle Ge * E */E örtülü döküm için/D &. –
C++ 11 işlev bildirimi için "geçersiz kılma" ekleyerek, temel sınıf işlevini geçersiz kılma niyetinizi netleştirir. Ayrıca, bildirdiğiniz işlevin, temelden gelen sabitlikten farklı olması durumunda, derleyiciden bir hata tetikler. Örneğin std :: exception'dan türetip, what() non-const) – Ghita