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

pregunta sobre dynamic cast

Estas en el tema de pregunta sobre dynamic cast en el foro de C/C++ en Foros del Web. Buenas, tengo una pregunta que me surgio al intentar liberar la memoria luego de utilizar el operador dynamic_cast. tengo algo asi: void funcion(clase_base * base){ ...
  #1 (permalink)  
Antiguo 04/10/2010, 09:30
 
Fecha de Ingreso: septiembre-2010
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
pregunta sobre dynamic cast

Buenas, tengo una pregunta que me surgio al intentar liberar la memoria luego de utilizar el operador dynamic_cast.

tengo algo asi:

void funcion(clase_base * base){

clase_derivada * der = dynamic_cast<clase_derivada*)(base);

//trabajo con el puntero "der"

delete(base);

}

mi pregunta es: esta bien hacer delete(base) o tendria q hacer delete(der), o da igual???

Muchas gracias
  #2 (permalink)  
Antiguo 04/10/2010, 16:01
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: pregunta sobre dynamic cast

Asumo que tienes construida una jerarquía polimórfica (funciones virtuales) dado que estás utilizando dynamic_cast para hacer un downcast. Pues bien, mientras hagas el delete a través del puntero der no hay problema puesto que conoces exactamente el tipo de dato que estás borrando; pero, si lo haces a través del puntero a la clase base, entonces necesitas que el destructor de tu clase base sea virtual para que el destructor de tu clase derivada se ejecute correctamente a través del mecanismo virtual. Aún así deberías de revisar el diseño de tus clases y tratar de evitar el downcasting (lo habitual es que utilices el delete con punteros a la clase base).
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 09:48.