Partage
  • Partager sur Facebook
  • Partager sur Twitter

position de const

Où placer const dans la déclaration d'une fonction

Sujet résolu
    29 juin 2006 à 14:39:47

    Bonjour à tous,

    J'ai quelques questions concernant ces 3 différentes lignes de code


    const int get_stuff(int id){return stuff[id]};


    int const get_stuff(int id){return stuff[id]};


    int get_stuff(int id)const{return stuff[id]};


    Que veut dire exactement le mot clé const dans ce contexte?

    Quelles différences ya t'il entre les 3 lignes de codes çi-dessus ?


    Merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
      29 juin 2006 à 14:47:43

      Avec const int en valeur de retour, ça retourne une valeur entière que tu ne peux pas modifier (aucun intérêt).

      Avec const après le nom de la fonction, ça retourne une valeur entière et ça assure que cette méthode ne modifie pas les champs de la classe sur laquelle elle est appelée (C++).
      • Partager sur Facebook
      • Partager sur Twitter
        29 juin 2006 à 15:41:35

        Par contre pour:
        int const get_stuff(int id){return stuff[id]};
        je ne suis pas sûr que cela veuille dire quelque chose car le const ne d'applique pas une fonction(une fonction est const par définition) et il ne s'applique pas au int dans ce cas puisqu'il est après . Donc je ne sais pas . Est-ce que au moins çà compile ?
        • Partager sur Facebook
        • Partager sur Twitter
          29 juin 2006 à 15:46:57

          "int const" n'a pas d'intérêt hors pointeur non ?
          • Partager sur Facebook
          • Partager sur Twitter
            29 juin 2006 à 17:09:58

            Citation : remram44

            Avec const int en valeur de retour, ça retourne une valeur entière que tu ne peux pas modifier (aucun intérêt).

            Avec const après le nom de la fonction, ça retourne une valeur entière et ça assure que cette méthode ne modifie pas les champs de la classe sur laquelle elle est appelée (C++).



            Merci, c'est ce que je voulais savoir.
            En résumé:

            const int get_stuff(int id){return stuff[id]};


            Retourne une valeur de type const int (entier constant)

            et

            int get_stuff(int id)const{return stuff[id]};


            spécifie que la fonction ne modifie ni les arguments, ni l'objet sur laquelle elle est appelée ?

            Est-ce que ça peut aussi servir en dehors d'une classe ?


            Citation : remram44


            "int const" n'a pas d'intérêt hors pointeur non ?



            Ca compile en tous cas... Mais c'est vrai que je ne vois pas trop ce que cela peut vouloir dire...
            • Partager sur Facebook
            • Partager sur Twitter
              29 juin 2006 à 19:09:26

              selon moi const int et int const font le même truc? L,ordre n'a pas trop de rapport.. Un peut comme
              extern int et int extern..

              Mais bon c'est mon avis et j'ai pas testé donc je peut me tromper :)
              • Partager sur Facebook
              • Partager sur Twitter
                29 juin 2006 à 19:26:07

                Citation : probabil1ty

                spécifie que la fonction ne modifie ni les arguments, ni l'objet sur laquelle elle est appelée ?


                Ah si, les arguments oui il me semble.
                • Partager sur Facebook
                • Partager sur Twitter
                  29 juin 2006 à 19:29:49

                  Oui pour les arguments il y a une troisième utilisation de const
                  func ( const type & var);

                  ici, const sur une ref, car mettre un const sur une copie est un peu useless
                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 juin 2006 à 20:22:45

                    Merci à tous pour vos réponses :)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    position de const

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown