[C con Clase] duda destructores
Davidson, Steven
srd4121 en njit.edu
Mie Ene 9 23:49:45 CET 2013
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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20130109/b6f5a847/attachment-0001.html>
Más información sobre la lista de distribución Cconclase