#include<iostream>
using namespace std;
class Mahesh
{
public:
Mahesh(){
cout<<"Base Constructor is called at here"<<endl<<endl;
}
virtual ~ Mahesh()
{
cout<<"Base Destructor is called"<<endl<<endl;
}
};
class Purnima:public Mahesh
{
public:
Purnima()
{
cout<<"Derived class constructor"<<endl<<endl;
}
~Purnima(){
cout<<"Derived class Destructor"<<endl<<endl;
}
};
int main()
{
Mahesh *m1;
Purnima p1;
m1=&p1;
return 0;
}
Ma question est de savoir si je n'écris pas mot-clé virtual
devant destructor puis au-dessus du code fonctionne très bien, alors pourquoi destructor virtuelle?mot-clé Omettre virtuel avant destructor fonctionne encore pratiquement
Mieux dupliquer: https://stackoverflow.com/q/461203/501250 – cdhowie
Aucun des doublons n'est approprié. La réponse est que 'virtual' est hérité, que vous le spécifiez à nouveau dans le destructeur dérivé ou non. – EJP
Vous n'invoquez jamais le destructeur de façon polymorphe. Vous testez essentiellement que la destruction d'une classe dérivée appelle à la fois le destructeur parent et le destructeur dérivé. – chris