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 :

Besoin de quelques éclaircissements en c++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut Besoin de quelques éclaircissements en c++
    1-le constructeur par recopie est appelé dans trois cas:
    *initialisation d'un objet.(objet b,a on peut donc écrire b=a)=>original c'est donc a ,la copie c'est b.
    *retourner un objet=>original:expression aprés le return,copie:objet temporaire
    objet transmis par valeur=>original:paramétre effectif,copie:paramétre formel
    mais en quoi est utile de préciser à chaque fois c'est quoi la copie,c'est quoi l'original?
    un objet temporaire ça signifie quoi?
    2-une réference d'aprés mes lectures est comme un synonyme d'une variable,toute modification du reference modifie aussi la variable..
    Mais son utilité ,j'arrive vraiment pas à la toucher son créateur pourquoi il l'a ajoutée?
    3-supposons que j ai deux methodes,l'une:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int Point::coincide(Point pt) 
    {
      //instructions....
    }
    ***********************
    int Point::coincide(Point &pt) 
    {
      //instructions....
    }
    l'appel de ces deux methodes se fera de la meme maniére:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Point a,b;
    b.coincide(a)
    comment puis-je en voyant l'appel savoir la maniére dont est implémenté ma methode( reference ou par valeur)
    quelle est la difference entre passer un objet par valeur,ou par reference?
    je serais trés reconnaissante à vos eclaircissements Chers Developpeurs

  2. #2
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Citation Envoyé par s-ehtp Voir le message
    comment puis-je en voyant l'appel savoir la maniére dont est implémenté ma methode( reference ou par valeur)
    Tu ne peux pas

    Citation Envoyé par s-ehtp Voir le message
    quelle est la difference entre passer un objet par valeur,ou par reference?
    je serais trés reconnaissante à vos eclaircissements Chers Developpeurs
    En passant par valeur, le compilateur prend l'objet que tu passes, en fait une copie (ce qui souvent est lourd), et renvoie donc un autre objet, identique au premier.

    En passant par référence, tu lui passes directement l'objet que tu as créé, sans copie, et donc si dans la fonction on modifie l'objet, alors à la sortie de la fonction l'objet sera aussi modifié.

    Voilà un peu de doc sur les références: http://cpp.developpez.com/faq/cpp/?page=references

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par s-ehtp Voir le message
    mais en quoi est utile de préciser à chaque fois c'est quoi la copie,c'est quoi l'original?
    Pour être exaustif ?
    Citation Envoyé par s-ehtp Voir le message
    un objet temporaire ça signifie quoi?
    C'est un objet qui n'est associé à aucune variable. Quand tu fais int a = 2*3+4, un premier objet temporaire de type entier est crée, valant 6 (2*3), puis un second valant 10 (6+4), et ce second est affecté à a (l'objet a n'étant pas temporaire).
    Citation Envoyé par s-ehtp Voir le message
    Mais son utilité ,j'arrive vraiment pas à la toucher son créateur pourquoi il l'a ajoutée?
    Principalement pour le passage d'arguments, je pense.
    Citation Envoyé par s-ehtp Voir le message
    comment puis-je en voyant l'appel savoir la maniére dont est implémenté ma methode( reference ou par valeur)
    Tu ne peux pas, sauf qu'en général, quand on passe par référence non constance, c'est pour modifier la valeur, et le nom de la fonction doit être suffisemment clair pour qu'il n'y ait pas de doute.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. Réponses: 8
    Dernier message: 19/03/2011, 12h45
  2. [PC portable] Futur étudiant SRC veux s'équiper mais a besoin de quelques éclaircissements :)
    Par opencontact dans le forum Ordinateurs
    Réponses: 7
    Dernier message: 06/06/2009, 15h22
  3. besoin de quelques éclaircissements
    Par namstou3 dans le forum E-Commerce
    Réponses: 1
    Dernier message: 29/04/2008, 12h39
  4. Besoin de quelques conseils pour un script java
    Par poussin544 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/03/2006, 10h41

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