Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Destructores en clases que heredan?

Estas en el tema de Destructores en clases que heredan? en el foro de C/C++ en Foros del Web. Cuando tienes un objeto que hereda de una clase, cuando eliminas el elemento, y haces delete, se ejecuta el destructor de la clase madre o ...
  #1 (permalink)  
Antiguo 18/03/2011, 10:42
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 1 mes
Puntos: 2
Destructores en clases que heredan?

Cuando tienes un objeto que hereda de una clase,
cuando eliminas el elemento, y haces delete, se ejecuta el destructor de la clase madre o solo el de la hija?.
Como hacer que se ejecute el de la madre e hija, como se hacia en java con super() ?
__________________
Darkgaze
  #2 (permalink)  
Antiguo 20/03/2011, 23:44
 
Fecha de Ingreso: febrero-2011
Ubicación: Paraguay
Mensajes: 59
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Destructores en clases que heredan?

Que yo sepa se ejecuta el destructor de la clase madre a no ser que hayas especificado un destructor en la clase hija, entiendes??
Luego, te puedo ayudar en C y C++ pero, JAVA???? Esta no es la sección amig@..
  #3 (permalink)  
Antiguo 21/03/2011, 03:28
Avatar de darkgaze  
Fecha de Ingreso: febrero-2006
Ubicación: Madrid, España
Mensajes: 462
Antigüedad: 18 años, 1 mes
Puntos: 2
Respuesta: Destructores en clases que heredan?

no no. cpreguntaba si tal vez era como en java.

O sea, que si no especificas destructor el de la madre. Ok.
Pero ¿y si lo especificas?... como se ejecutan ambos??
__________________
Darkgaze
  #4 (permalink)  
Antiguo 21/03/2011, 05:08
 
Fecha de Ingreso: marzo-2011
Mensajes: 2
Antigüedad: 13 años
Puntos: 0
Respuesta: Destructores en clases que heredan?

En herencia los constructores y los destructores de los padres son llamados por defecto.

En el caso de los destructores primero se llama al destructor propio y después al del padre. En el caso de los constructores es al revés.

Esto se hace sin importar que lo hayas especificado o no, ya que no especificando un constructor/destructor se utiliza uno por defecto (invisible al programador y, a grandes rasgos, omitible).

No sé hasta qué punto es posible llamar al destructor de una clase hija sin llamar a la del padre después.
  #5 (permalink)  
Antiguo 21/03/2011, 11:18
 
Fecha de Ingreso: marzo-2011
Mensajes: 54
Antigüedad: 13 años, 1 mes
Puntos: 11
Respuesta: Destructores en clases que heredan?

La mejor manera para saberlo es (en mi opinión) esta:
Código C++:
Ver original
  1. //Ver el orden en el que se ejecutan constructores y destructores de la clases madre e hija
  2. #include <iostream>
  3. using namespace std;
  4.  
  5. class Madre{
  6.     public:
  7.         Madre(){
  8.             cout << "Constructor madre \n";
  9.         }
  10.         ~Madre(){
  11.             cout << "Destructor madre \n";
  12.         }
  13. };
  14.  
  15. class Hija : Madre{
  16.     public:
  17.         Hija(){
  18.             cout << "Constructor hija\n";
  19.         }
  20.         ~Hija(){
  21.             cout << "Destructor hija\n";
  22.         }
  23. };
  24.  
  25. int main(){
  26.     Hija jjj;
  27.     return 0;
  28. }

Un saludo! ;)

Etiquetas: clases
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:22.