Contenu du cours
Programmation Orientée Objet en C++
Programmation Orientée Objet en C++
Qu'est-ce Qu'un Destructeur de Classe
Les destructeurs sont des fonctions membres spéciales qui sont invoquées lorsque la durée de vie d’un object's
prend fin. Leur objectif principal est de libérer les ressources que l’objet a pu acquérir au cours de sa durée de vie.
Syntaxe du destructeur
Même s’ils remplissent des fonctions opposées, la création d’un destructeur est très similaire à celle d’un constructeur. Ils partagent presque les mêmes principes de déclaration. L’approche générale pour en créer un est la suivante :
- Nom : il porte le même nom que la classe, mais est précédé d’un tilde (
~
) ; - Aucun type de retour : il ne possède pas de type de retour, même pas void ;
- Aucun paramètre : il ne peut pas prendre de paramètres ;
- Invocation automatique : il est appelé automatiquement par le compilateur lorsque l’objet sort de la portée ou est explicitement supprimé.
Invocation automatique des destructeurs
L’invocation automatique des destructeurs fait référence à l’appel automatique du destructeur. Cela garantit que les ressources détenues par l’objet sont correctement libérées, ce qui aide à prévenir les fuites de mémoire et de ressources.
scope.cpp
delete.cpp
termination.cpp
int main() { { Example obj; // Object created } // Object goes out of scope here, destructor is invoked }
- lorsqu'un objet sort de la portée ;
- lorsque l'opérateur
delete
est utilisé pour supprimer des objets alloués dynamiquement ; - lorsque le programme se termine.
Nécessité des destructeurs
L'objectif principal d'un destructeur est de libérer les ressources acquises par l'objet durant sa durée de vie. Cela inclut la fermeture des descripteurs de fichiers, la désallocation de la mémoire (avec new
) ou des tâches similaires.
ResourceHolder.cpp
FileHandler.cpp
class ResourceHolder { public: DynamicArray(int size) { data = new int(100); } ~DynamicArray() { delete data; } private: int* data; };
1. Quel est le but principal d’un destructeur ?
2. Quelle est la syntaxe pour déclarer un destructeur ?
Merci pour vos commentaires !