Aşağıdaki kod, sanal miras eksikliğinden hala olumsuz etkilenir mi?Temel sınıflar veri üyesi içermediğinde sanal miras hala gerekli midir?
Eğer öyleyse, olumsuz etkileri ile aynı olacağını (ya kadar kötü) class A
veri üyeleri içeren eğer sanal miras olmadan çoklu miras olumsuz etkileri?
class A
{
public :
virtual ~A () { }
virtual int foo () const = 0 ;
} ;
class B : public A
{
public :
virtual ~B () { }
} ;
class C : public A
{
public :
virtual ~C () { }
} ;
class D : public B , public C
{
public :
virtual int foo () const { return 12 ; }
} ;
O [görünüyor gayet derleyecek Burada (http://coliru.stacked-crooked.com/view?id=8bd2970b897e9b44), yani B'den türetilmiş bir A işaretçisinin C'den türetilmiş gibi aynı değere sahip olmasını beklerseniz, – Niall
yolunda, A'da boş bir uygulama ile sanal bir yıkıcıyı bildirmeniz gerekir. Bkz. http://stackoverflow.com/questions/461203/when-to-use-virtual-destructors – Notinlist
@Notinlist Yakalama için teşekkürler. Güvenlik için A, B ve C'ye sanal yıkıcılar ekledim. – Giffyguy