BUSCAR
INDICE
INDICE DEL TEMA
OBJETIVOS
TEORIA
PALABRAS RESERVADAS
GLOSARIO
EJERCICIOS
RESUELTOS
AUTOEVALUACION
PROPUESTOS
ERRORES
ESTADISTICAS
INICIO
FAQS
LINKS
RECOMIENDANOS
QUIENES SOMOS
MAPA DEL WEB
COLABORAR
Tema 20 Funciones Virtuales y Polimorfismo
Teoría: Destructores Virtuales

Como norma general, el constructor de la clase base se llama antes que el constructor de la clase derivada. Con los destructores, sin embargo, sucede al revés: el destructor de la clase derivada se llama antes que el de la clase base.

Por esa razón, en el caso de que se borre, aplicando delete, un puntero a un objeto de la clase base que apunte a un objeto de una clase derivada, se llamará al destructor de la clase base, en vez de al destructor de la clase derivada, que sería lo adecuado. La solución a este problema consiste en declarar como virtual el destructor de la clase base. Esto hace que automáticamente los destructores de las clases derivadas sean también virtuales, a pesar de tener nombres distintos.

De este modo, al aplicar delete a un puntero de la clase base que puede apuntar a un objeto de ese tipo o a cualquier objeto de una clase derivada, se aplica el destructor adecuado en cada caso. Por esta razón es conveniente declarar un destructor virtual en todas las clases abstractas, ya que aunque no sea necesario para esa clase, sí puede serlo para una clase que derive de ella.

Este problema no se presenta con los constructores y por eso no existe ningún tipo de constructor virtual o similar.