class Caja {
Caja :: Caja (double dim1, double dim2, double dim3)
Caja::~Caja (void)
{
longitud = 0;
anchura = 0;
altura = 0;
}
double Caja:: volumen (void)
main ()
cout << "El volumen de la caja grande es " << grande.volumen()
<< '\n';
# include <iostream.h>
Si algún bloque de memoria fuera reservada dinámicamente en un objeto, se puede
utilizar el destructor para liberarla antes de que se pierdan los punteros a esas variables.
double longitud, anchura, altura;
public:
Caja (double dim1, double dim2, double dim3);
~Caja (void);
double volumen (void);
};
{
longitud = dim1;
anchura = dim2;
altura = dim3;
};
return longitud * anchura * altura;
};
{
Caja pequeña(5, 4, 10), mediana (10, 6, 20), grande(20, 10, 30);
}
class Taco {
main ()
delete soft;
#include <iostream.h>
public:
Taco (int hard) {
hardness = new int;
*hardness = hard;
}
~Taco() {
cout << "Destroying taco with hardness
" ;
cout << *hardness <<;\n';
delete hardness;
}
private:
int *hardness;
};
{
Taco hard(10);
Taco *soft = new Taco (0);
};
En este ejemplo, vemos que el constructor tiene el mismo nombre que la clase,
con un ~ delante. Cuando se crean punteros a clases, como soft en el ejemplo,
se llama al destructor cuando se libera la memoria del puntero. Si esto no
se hace, nunca se llamará al destructor.
Con clases declaradas estáticamente, como Taco hard, el destructor
se llama al final de la función donde se declara el objeto (en el
ejemplo, al final de la función main.
Incluse cuando se interrumpe un programa usando una llamada a exit(), se llama a los destructores
de los objetos que existen en ese momento.