Par définition, un destructeur sert à deux grandes sortes de choses :
1/ libérer la mémoire dynamique assoiée à l'objet en question
2/ Faire d'autres choses particulières.
1/ Prenons l'exemple d'une classe Objet3D :
class Objet3D
{
//
texture* text;
}
Considere obj l'instance d'une telle classe.
Disons que la texture pointée à été allouée dynamiquement à la création de l'objet 3D (donc dans le constructeur).
Bien, par defaut tout ce qui est contenue dans obj ET qui est statique sera détruit automatiquement lors de la mort de obj.
Ce n'est pas le cas de ta texture.
Ainsi dans ton destructeur tu devras mettre :
Objet3D::~Objet3D()
{
delete(texture);
texture = NULL;
}
2/ Imagine qu'à la création de chaque objet, tu empiles des pointeurs de ces objets dans une liste de rendu.
Bien sur, lorsque tu supprime un objet, tu voudras supprimer son pointeur de la liste de rendu (afin de ne pas essayer de dessiner un objet qui n'existe plus)
Et bien ce genre d'actions très spécifiques ont tout intéret à etre dans le destructeur.
Ainsi, tu sais que cette action sera faite exactement à la destruction de l'objet, c'est très sécurisé comme manière de faire.
Si ce n'était pas le cas, ca serait au programmeur utilisateur de la classe Objet3D de penser à supprimer chaque objet qu'il balance de la liste de rendu.
J'espère avoir pu illustrer un peu tout ça clairement.
Bonne soirée