[C con Clase] duda destructores

omar mendoza omar.p9 en gmail.com
Jue Ene 10 00:21:18 CET 2013


Wow!!
Como siempre, muchas gracias Steven!!

El 9 de enero de 2013 16:49, Davidson, Steven <srd4121 en njit.edu> escribió:

> Hola Omar,
>
> 2013/1/9 omar mendoza <omar.p9 en gmail.com>
>
> [CORTE]
>
> y después en main,cpp tengo que
>>
>> #include "claseB.cpp"
>>
>> int main(int argc, const char *argv[]) {
>>
>>     claseA *ca = new claseB(1,2);
>>     if (ca != NULL) {
>>       delete ca;
>>       ca = NULL;
>>     }
>>   return 0;
>> }
>>
>>
>> pero resulta que no se ejecuta el destructor de la claseB. En este
>> ejemplo no creo memoria dinámica con new en claseB, pero si lo hiciera
>> se perdería y no podría liberarla...
>> Cómo podría resolver éste problema??
>>
>>
> El problema es que no estás usando objetos polimórficos. Tienes herencia,
> pero no polimorfismo. La solución es declarando el destructor en la clase
> 'A' como virtual. Esto es,
>
> class claseA
> {
> protected:
>   int num;
>
> public:
>   virtual ~claseA()  { ... }
> };
>
> Sugiero que indiques 'virtual' para las funciones miembro de las clases
> derivadas; así se entiende mejor que se trata de clases polimórficas.
>
>
> Espero haber aclarado la duda.
>
> Steven
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
Omar Jonathan Mendoza Bernal
"Las cicatrices nos recuerdan que el pasado fue real" Dr. Lecter en Dragón
Rojo
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130109/2895ca83/attachment.html>


Más información sobre la lista de distribución Cconclase