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 :

Placement de "const" ?


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut Placement de "const" ?
    Bonjour,

    Il se trouve que quand je lis le code d'autres personnes le const est souvent placé dans des endroits différents. Mais je ne vois pas en quoi cela consiste exactement.

    Si vous pourriez m'éclairer ^^

    Exemples:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    const int fnFonction( CObject const &gObj );
    int fnFonction( const CObject &gObj ) const;
    Et d'autres que j'oublies très certainement...

    Merci d'avance!

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Alors, il y a plusieurs points :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const int fnFonction( const CObject &gObj );
    int fnFonction( const CObject &gObj ) const;
    ces deux cas sont très différents :

    dans le premier cas, la fonction renvoie un int constant, cette syntaxe informe uniquement du type de retour de la fonction et peut être utilisé partout

    dans le second, cela implique que la fonctions soit membre d'une classe...

    en effet, le const en fin de ligne signifie que la fonction ne modifiera pas l'instance sur laquelle elle est appellée et donc qu'elle peut être appellée sur des instances constantes.

    pour la seconde syntaxe que tu indiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    const CObject &gObj
    CObject const &gObj
    les deux sont strictement équivalente...

    dans la norme, voici comment on répère à quoi s'applique const :

    const s'applique toujours à ce qui le précède immédiatement, excepté s'il n'y a rien qui le précède, dans ce cas, il s'applique à ce qui le suit immédiatement
    dans les quatres syntaxes que j'ai évoqué, const s'applique respectivement à
    1. const int => int (ce qui le suit immédiatement car rien ne le précède)
    2. int fnFonction( const CObject &gObj ) const; ==> fnFonction( ... ) la méthode est déclarée constante (il s'agit plus ici d'un moyen mnémotechnique car la syntaxe est secondaire et n'entre pas vraiment dans le cadre de la règle
    3. const CObject &gObj => CObject (ce qui le suit immédiatement car rien ne le précède)
    4. CObject const &gObj => CObject (ce qui le précède immédiatement)


    j'espère que c'est plus clair pour toi
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Membre averti Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Points : 369
    Points
    369
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    const int fnFonction( CObject const &gObj );
    Recoit un paramètre par référence constant de type CObject, retourne un entier constant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int fnFonction( const CObject &gObj ) const;
    Recoît un paramètre par référence constant de type CObject, ne modifie pas l'instance de classe (2ième const), retourne un entier


    Edit: Oops, Swoog est plus rapide que son ombre

  4. #4
    Membre confirmé
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Points : 588
    Points
    588
    Par défaut
    Merci beaucoup pour ces réponses, je crois que tout a été dit

    Hop, résolu

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

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