[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