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

Langage C++ Discussion :

const& passé en paramètre


Sujet :

Langage C++

  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 218
    Points : 296
    Points
    296
    Par défaut const& passé en paramètre
    Bonjour,

    Alors voilà mon soucis, j'ai du mal à comprendre cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void show(Objet const& o)
    {
    }
    Elle prend en paramètre const&, alors je sais que o sera constante mais c'est le '&' qui m'embête.

    A quoi sert-il ?

    Merci de votre aide.

    A.

  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,

    Lorsque le symbole "&" aparait dans une déclaration (ici, il s'agit de la décalration d'un argument), il représente le fati que l'élément déclaré est une référence.

    Une référence est en fait l'alias d'un objet, et permet, lorsqu'il s'agit de passer cet objet en paramètre à une fonction d'en éviter la copie.

    Il n'est en effet pas rare qu'un type donné demande énormément de temps ou de ressource pour etre copié (voir meme qu'il ne puisse purement et simplement pas l'être )

    Cela permet en outre de s'assurer que toute modification apportée au paramètre dans la fonction appelée sera répercutée sur l'objet d'origine dans la fonction appelante (si ce n'est que, dans l'exemple que tu donnes, la référence est constante et que l'on ne pourra donc pas apporter de modification à l'objet référencé ).

    Le principe de la référence est donc, finalement, fort proche de celui du pointeur à ceci près que
    • la référence utilise la même syntaxe pour accéder à son contenu qu'un objet "normal"
    • la référence présente une garantie de non nullité (l'objet référencer doit exister) et qu'une référence,
    • une fois créée, ne peut pas se mettre à référencer un objet différent de celui qui a été référencé lors de la déclaration de la référence
    On préférera généralement passer tout ce qui est plus grand qu'un type primitif sous la forme de référence (éventuellement constante) au passage d'argument par valeur (meme si aucune modification ne doit être répercutée vers l'objet original dans la fonction appelante) ou au passage par pointeur que l'on essayera de n'utiliser que lorsque l'on n'a vraiment pas le choix
    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
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 218
    Points : 296
    Points
    296
    Par défaut
    Merci de ta réponse, ça ma beaucoup aidé !

    Passe une bonne journée.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/02/2006, 21h31
  2. Problème de fstream passé en paramètre
    Par Beb8 dans le forum SL & STL
    Réponses: 2
    Dernier message: 11/04/2005, 11h51
  3. [SQL server 2000] bout de requete passé en paramètre
    Par guignol dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 10/08/2004, 17h45
  4. Réponses: 6
    Dernier message: 28/05/2004, 09h39
  5. Réponses: 5
    Dernier message: 27/11/2003, 10h55

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