La destruction des objets

Chapitres traités   

La construction personnalisée des objets est très fréquente alors que la destruction l'est beaucoup moins. Nous verrons, malgré tout, des cas où il est absolument nécessaire de redéfinir le destructeur proposé par défaut.

 

 

Destruction des objets

Comment se passe la destruction des objets ? Reprenons la classe «  Complexe  » afin de visualiser à la fois, la création et la destruction de l'objet.

Finalement, tout se passe correctement. L'objet se détruit automatiquement quand il le faut. Justement, il est assez fréquent d'avoir plutôt des objets locaux. Toutefois, nous avons souvent aussi besoin d'objets dynamiques. Cette fois-ci, cela ne se fait plus automatiquement, c'est le programmeur qui décide quand l'objet doit être créé, à l'aide de l'opérateur «  new  », et quand il doit être détruit, cette fois-ci grâce à l'opérateur «  delete  ».

 

Nous avons découvert qu'il existait un destructeur. Vu ce que nous venons de voir, à quoi peut-il bien servir, puisque qu'apparemment tout se passe correctement ?

Choix du chapitre Rôle du destructeur :

Le regard doit se porter à l'intérieur de la classe. Tout dépend de la déclaration des attributs, ou plutôt de la zone mémoire utilisée pour stocker leurs valeurs. Si les valeurs des attributs se situent sur la pile ou dans la zone statique, nous venons de voir que tout se gère automatiquement. Il existe un cas où le programmeur doit s'occuper de la destruction, c'est lorsqu'au moins un attribut fait référence à un objet dynamique. En effet, dans ce cas là, il sera nécessaire de libérer la variable dynamique avant que les attributs ne soient détruits automatiquement. C'est donc là que le destructeur intervient. Pour illustrer ces propos, reprenons l'exemple de la classe «  Notes  » en envisageant, cette fois-ci, que la taille du tableau est totalement variable. C'est au moment de la création de l'objet que l'on précise la dimension.

Quand avons-nous besoin de redéfinir un destructeur ?

La réponse est systématiquement lorsque nous utilisons des variables dynamiques au sein de l'objet. Souvenez-vous que lorsque nous employons un «  new  », il faut qu'à un moment donné, il y ait un «  delete  ». Si c'est dans l'objet que nous avons écrit un «  new  », c'est également dans l'objet que nous devons écrire un «  delete  ».

Par ailleurs, dès que vous avez un pointeur comme attribut, posez-vous la question de savoir si nous n'avons pas besoin de redéfinir le destructeur.