IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

appeler le destructeur dans une fonction


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 217
    Points : 107
    Points
    107
    Par défaut appeler le destructeur dans une fonction
    bonjour,

    je voudrais savoir si c'est possible d'appeler le destructeur dans une fonction ou pas ?

    Merci

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    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

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    le destructeur s'appelle comme une fonction membre nommée ~Type()
    Boost ftw

  4. #4
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 217
    Points : 107
    Points
    107
    Par défaut
    Merci pour toutes vos réponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. appel du php dans une fonction javascript
    Par manal00 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 05/06/2012, 11h37
  2. Problème d'appel de fichiers dans une fonction
    Par guilome35 dans le forum Tkinter
    Réponses: 1
    Dernier message: 19/06/2010, 08h17
  3. Appelle du destructeur dans une méthode du même Objet
    Par leo_OrNg dans le forum Débuter
    Réponses: 4
    Dernier message: 03/01/2010, 00h37
  4. [Débutant] Appel de variable dans une fonction déjà défini dans un prog principal
    Par hollowdeadoss dans le forum MATLAB
    Réponses: 8
    Dernier message: 19/09/2008, 13h02
  5. [langage] appel d'un tableau dans une fonction
    Par donny dans le forum Langage
    Réponses: 11
    Dernier message: 13/11/2006, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo