Destructeur

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

En programmation orientée objet, le destructeur d'une classe est une méthode spéciale lancée lors de la destruction d'un objet afin de récupérer les ressources (principalement la mémoire vive) réservée dynamiquement lors de l'instanciation de l'objet. Alors qu'il peut exister plusieurs constructeurs, il ne peut exister qu'un seul destructeur.

Les destructeurs permettent d'utiliser le pattern de programmation Resource Acquisition Is Initialization qui facilite l'écriture de code gérant bien les exceptions. Il permet de libérer les ressources utilisées de manière certaine, et aussi d'assurer la fermeture de certaines parties du code.

Les langages qui utilisent des ramasse-miettes n'offrent pas le mécanisme des destructeurs puisque le programmeur ne doit plus gérer la mémoire lui-même. Ainsi Java propose les Finalizer à la place. Il s'agit d'une méthode spéciale, garantie d'être appelée une fois avant que l'objet ne soit récupéré par le ramasse-miettes. En revanche, il n'y a aucune garantie sur quand cela va se produire.

En C++[modifier | modifier le code]

Le destructeur est souvent utile en C++ car ce langage offre le mécanisme des pointeurs. Cependant, dès lors que l'on utilise à la place les classes de la STL, on pourra s'en passer.

Le destructeur est une fonction membre de la classe portant le même nom que celle-ci précédé d'un tilde. Il est appelé lorsqu'un objet devient hors de portée ou lors de l'utilisation du mot-clé delete. C++ dispose d'un destructeur par défaut, qui ne fait rien.

class Object
{
    public :
        ~Object (); // Destructeur
};
 
int main ()
{
    Object obj, *p_obj=new Object();
    delete p_obj;   // Destruction de l'objet pointé par p_obj
}                   // Destruction d'obj

Voir aussi[modifier | modifier le code]