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 :

Question sur l'instanciation


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 36
    Points : 36
    Points
    36
    Par défaut Question sur l'instanciation
    Bonjour,

    J'ai une question mais c'est surtout de la curiosité. J'instancie une variable de cette manière (avec le constructeur par défaut).

    Cet objet o sera détruit à la fin de la portée dans lequel il a été déclaré.

    Maintenant je construis de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Objet *o2 = new Objet();
    L'objet pointé par o2 sera maintenant accessible jusqu'à la fin de l'exécution du programme. Maintenant que se passe-t-il si j'affecte de cette manière :

    Est-ce que l'objet pointé par o2 sera tout de même supprimé à la fin de l'exécution ? Oui ou non, mais surtout pourquoi ?

    Merci !

  2. #2
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Il ne le sera pas, car l'opérateur d'affectation (le =) va le copier, et que c'est cette copie qui sera détruite lorsque l'on sortira de la portée de la variable o1.

    Autrement dit, si tu laisses faire le compilateur et que ta classe est simple, dans les deux cas tu vas réserver un espace mémoire pour tes objets. Ensuite, lors de ton affectation, le compilateur va générer du code qui va simplement recopier le contenu de l'espace mémoire réservé à o2, dans celui réservé à o1. Enfin, quand tu sors de la portée de o1, il va libérer l'espace mémoire réservé à o1, mais ne fera rien pour celui réservé à o2.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 36
    Points : 36
    Points
    36
    Par défaut
    Et y'a-t-il un moyen de ne pas faire une copie, mais de récupérer exactement l'objet pointé par o2 ? En passant par les références peut-être ?

    Ceci fonctionne-t-il ?

  4. #4
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Ca fonctionne, mais en aucun cas la référence ne détruit la ressource vers laquelle elle pointe lorsqu'on sort de sa portée. C'est à dire que dans ton code, la mémoire alloué à l'objet o2 ne sera pas pour autant libérée.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Août 2009
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 36
    Points : 36
    Points
    36
    Par défaut
    D'accord, merci beaucoup pour ton aide !

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    un pointeur intelligent pourra t'aider à retrouver un comportement de type 'valeur' : cf Présentation des pointeurs intelligents en C++ par Loïc Joly

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

Discussions similaires

  1. Petites questions sur l'instanciation
    Par Kodkey dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 05/11/2014, 12h26
  2. Réponses: 6
    Dernier message: 31/08/2009, 17h41
  3. Question sur les handles et les couleurs...
    Par MrDuChnok dans le forum C++Builder
    Réponses: 7
    Dernier message: 29/10/2002, 08h45
  4. Réponses: 2
    Dernier message: 11/08/2002, 21h27
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

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