/*Child is inherited from Parent*/
class Parent {
public:
Parent() //Constructor
{
cout << "\n Parent constructor called\n" << endl;
}
protected:
~Parent() //Dtor
{
cout << "\n Parent destructor called\n" << endl;
}
};
class Child : public Parent
{
public:
Child() //Ctor
{
cout << "\nChild constructor called\n" << endl;
}
~Child() //dtor
{
cout << "\nChild destructor called\n" << endl;
}
};
int main()
{
Parent * p2 = new Child;
delete p2;
return 0;
}
Si hago el destructor virtual Parent
, entonces obtengo un error, entonces ¿para qué sirve la destrucción virtual de un destructor?¿Hay algún uso para hacer un destructor protegido virtual?
Tal vez deberíamos comenzar con "¿por qué harías dtor protegido?". –
¿Por qué alguna vez quisiste hacer el destructor virtual? ¿No debería * usted * conocer el propósito? Un destructor protegido significa que los objetos no se deben destruir a través de punteros base, por lo que el código en 'main' es completamente incorrecto. – thiton
Ver http://stackoverflow.com/questions/461203/when-to-use-virtual-destructors – user998692