bonjour,
je voudrais savoir si c'est possible d'appeler le destructeur dans une fonction ou pas ?
Merci
bonjour,
je voudrais savoir si c'est possible d'appeler le destructeur dans une fonction ou pas ?
Merci
Salut,
Le constructeur et le destructeurs sont avant tout des fonctions membres de la classe...
Il est donc tout à fait possible de les appeler depuis une fonction, à l'instar de n'importe quelle autre fonction membre
Il existe même une pratique (recherche placement new ou memory pool sur le forum et/ou dans la FAQ) qui finit par faire appel au constructeur et au destructeur de manière controlée.
Cependant, il faut bien te dire que, ainsi que l'objet n'est pas initialisé tant que le constructeur n'a pas été appelé, bien que la mémoire nécessaire pour représenter la structure de donnée ait été fournie et alignée, un objet n'est plus utilisable une fois que son destructeur a été appelé... et qu'un nouvel appel au destructeur (entre autre lors de la sortie de la portée de la variable ou lors d'un appel à delete) risque de faire pas mal de dégâts en cas de manque de contrôles
C'est la raison pour laquelle on préfère laisser l'utilisation du destructeurs aux mécanismes existants (delete, delete[] et destruction d'un instance en sortie de portée) que de faire un appel explicite au destructeur
Une alternative (en dehors de toute décision d'avoir recours au placement new) souvent utilisée pour implémenter ce que l'on appelle un singleton est de:
- rendre le constructeur et le destructeur privés
- fournir un membre (privé) statique qui est un pointeur sur l'objet
- fournir une méthode (publique) statique permettant d'obtenir l'instance en appelant la créant par new "a la demande" si elle n'existe pas encore
- fournir (éventuellement) une méthode (publique) statique permettant de libérer l'instance par delete "a la demenade" si elle existe
A méditer: La solution la plus simple est toujours la moins compliquée
Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
Compiler Gcc sous windows avec MinGW
Coder efficacement en C++ : dans les bacs le 17 février 2014
mon tout nouveau blog
le destructeur s'appelle comme une fonction membre nommée ~Type()
Boost ftw
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager