Constructeurs et destructeurs

Nous avons appris à créer des classes. Cependant quelques choses nous manquent, celle de pouvoir initialiser les variables membre lorsqu’un objet est créé et celle de pouvoir intervenir lorsqu’un objet a été détruit afin de libérer la mémoire réservée dynamiquement lors de l'instanciation de l'objet.
Et ce sont ces dernières qui feront l’objet de ce cours.

Le constructeur

Un constructeur d’une classe s’agit d’une méthode membre qui est appelée lors de la création d’un objet et qui consiste à initialiser les membres de la classe, à allouer de la mémoire vive…
Toute classe créée sans constructeur, a un constructeur par défaut ajouté par le compilateur. Et ce constructeur est appelé d’une manière implicite lors de la création d’une instance. Vu que ce constructeur ne fait pas grand-chose, il est mieux de créer son propre constructeur.

Pour déclarer un constructeur, il faut noter que :

  • Un constructeur a le même nom que la classe
  • Il ne possède aucune valeur de retour
  • Il peut avoir des arguments

Exemple :

Le constructeur est appelé lors de la création d’un objet. Cependant la façon d’appeler le constructeur diffère selon la manière dont a été créé l’objet.

  • Création de façon statique
    on appelle le constructeur suivant cette syntaxe :
    nom-de-la-classe nom-de-l-objet(paramètres) ;
  • Création de façon dynamique
    le constructeur est appelé en utilisant le mot-clé new et en définissant un pointeur vers l’objet. L'operateur new est utilisé pour réserver une zone de mémoire destiné à stocker une ou plusieurs instances de la classe.

Exemple :

Le destructeur

Le destructeur d’une classe est une méthode lancée lors de la destruction d’un objet afin de libérer la mémoire qui a été alloué lors de l’instanciation de l’objet.

Pour déclarer un destructeur, il faut noter que :

  • Un destructeur a le même nom que la classe et est précédé d'un tilde (~)
  • Il ne possède aucune valeur de retour
  • Il ne peut pas avoir des arguments

Exemple :

Le destructeur d’un objet créé de façon statique est appelé de façon implicite dès que l’objet devient hors de portée.
Le destructeur d’un objet créé de façon dynamique est appelé en utilisant le mot clé delete.

Exemple :



Une question? Cliquez ici pour la poser.

Retour sur le portail du langage C/C++