Probabilmente è stato chiesto prima su SO, ma non sono riuscito a trovare una domanda simile.Devo specificare anche virtuale sui metodi delle sottoclassi?
Si consideri il seguente gerarchia di classe:
class BritneySpears
{
public:
virtual ~BritneySpears();
};
class Daughter1 : public BritneySpears
{
public:
virtual ~Daughter1(); // Virtual specifier
};
class Daughter2 : public BritneySpears
{
public:
~Daughter2(); // No virtual specifier
};
C'è una differenza tra Daughter1
e Daughter2
classi?
Quali sono le conseguenze di specificare/non specificare virtual
su un distruttore/metodo di sottoclasse?
Grazie.
Nota per i lettori: dare un'occhiata anche alla parola chiave [override'] (http://stackoverflow.com/questions/13880205/override-in-c11) in C++ 11 che è strettamente correlata a quell'argomento. – ereOn