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 :

mot cle const


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de elmcherqui
    Profil pro
    Inscrit en
    Février 2008
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2008
    Messages : 281
    Par défaut mot cle const
    bonjour,

    je voudrais savoir si le mot cle const utilise dans les methodes de classe est necessaire ou facultatif au bon fonctionnement de celle ci .

    ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Nom_de_classe operator+(const Nom_de_classe &)
    est ce que le mot cle const est necessaire ?

    voila j'espere avoir ete claire dans ma question

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par défaut
    Ce n'est pas une obligation mais c'est plus safe car ça t'oblige à ne pas modifier le deuxième opérande. Lors de l'utilisation de l'opérateur +, on ne s'attend pas à ce que la deuxième opérande soit modifiée.

  3. #3
    Membre confirmé Avatar de babar63
    Homme Profil pro
    Développeur jeux vidéos/3d Temps réel
    Inscrit en
    Septembre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur jeux vidéos/3d Temps réel

    Informations forums :
    Inscription : Septembre 2005
    Messages : 241
    Par défaut
    Citation Envoyé par zouip Voir le message
    Ce n'est pas une obligation mais c'est plus safe car ça t'oblige à ne pas modifier le deuxième opérande
    Pas forcément, ici on peut modifier la variable passée en paramètre sans souci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nom_de_classe operator+(Nom_de_classe)
    Pour simplifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Nom_de_classe operator+(Nom_de_classe c);             // Passage par recopie : [in]
    Nom_de_classe operator+(Nom_de_classe &c);            // Passage par référence : [in] et/ou [out]
    Nom_de_classe operator+(const Nom_de_classe &c);      // Passage par référence constante : [in]

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par défaut
    Citation Envoyé par babar63 Voir le message
    Pas forcément, ici on peut modifier la variable passée en paramètre sans souci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nom_de_classe operator+(Nom_de_classe)
    Justement, là tu n'a pas mis le mot clef const dans le passage par référence...

  5. #5
    Membre confirmé Avatar de babar63
    Homme Profil pro
    Développeur jeux vidéos/3d Temps réel
    Inscrit en
    Septembre 2005
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur jeux vidéos/3d Temps réel

    Informations forums :
    Inscription : Septembre 2005
    Messages : 241
    Par défaut
    Citation Envoyé par elmcherqui
    est ce que le mot cle const est necessaire ?
    Citation Envoyé par zouip
    Ce n'est pas une obligation mais c'est plus safe
    Ce que je voulais dire c'est qu'on est pas obligé d'utiliser const pour rester "safe", on peut aussi passé le paramètre par recopie... il faut juste faire la distinction entre les trois cas de figures :
    Pour les types prédéfinis il est "préférable" de passer par recopie.
    Sinon il est "préférable" de passer par référence et dans ce cas si on ne souhaite pas modifier le paramètre alors il faut utiliser const

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 38
    Par défaut
    Okay on est sur la même longueur d'onde

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Par défaut
    Citation Envoyé par babar63 Voir le message
    Ce que je voulais dire c'est qu'on est pas obligé d'utiliser const pour rester "safe", on peut aussi passé le paramètre par recopie... il faut juste faire la distinction entre les trois cas de figures :
    Pour les types prédéfinis il est "préférable" de passer par recopie.
    Sinon il est "préférable" de passer par référence et dans ce cas si on ne souhaite pas modifier le paramètre alors il faut utiliser const
    Mais effectuer un passage par valeur peut poser un sérieux problème de performance. En fait l'idéal serait de toujours faire un passage par référence constante dans le cas général et de ne faire des copies que dans des cas contrôlés.

    Le const assure qu'on ne change pas la valeur à l'intérieur de la fonction de manière statique. C'est donc mieux encore que le passage par valeur d'après moi (comprendre « plus sûr »).

Discussions similaires

  1. [debutant] le mot clé const
    Par r0d dans le forum Débuter
    Réponses: 12
    Dernier message: 21/06/2006, 16h13
  2. Recherche par mots cles
    Par Seth77 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2006, 15h58
  3. [deb]Mot cle tyledef complement d'info
    Par Marc_3 dans le forum C++
    Réponses: 9
    Dernier message: 11/12/2005, 22h12
  4. [Mots cles]Signification de transient et volatile
    Par Pill_S dans le forum Langage
    Réponses: 2
    Dernier message: 14/07/2004, 11h58

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