Partage
  • Partager sur Facebook
  • Partager sur Twitter

Référence ou adresse ?

Problème vis-à-vis du cours

    7 octobre 2020 à 14:31:14

    Bonjour, j'ai besoin d'aide par rapport au chapitre sur les classes si quelqu'un veut bien me tendre la main svp

    void attaquer(Personnage &cible) {}

    "La méthode attaquer est également intéressante : elle prend en paramètre un autre personnage, plus exactement une référence vers le personnage cible que l'on doit attaquer ! "

    Pourtant &cible correspond à l'adresse d'un Personnage pas à une référence, si on voulait passer une référence en argument on aurait mis "Personnage& cible" non ? Je ne comprends et qu'importe ce que je choisis mon code compile parfaitement :/

    -
    Edité par LeSaligaud 7 octobre 2020 à 14:37:01

    • Partager sur Facebook
    • Partager sur Twitter

    Débutant en programmation !!

      7 octobre 2020 à 14:34:29

      EDIT : Trop rapide, désolé

      -
      Edité par KirbXCoucou 7 octobre 2020 à 14:57:05

      • Partager sur Facebook
      • Partager sur Twitter

      « Je n’ai pas besoin de preuve. Les lois de la nature, contrairement aux lois de la grammaire, ne permettent aucune exception. »
      D. Mendeleïev

        7 octobre 2020 à 14:37:58

        KirbXCoucou a écrit:

        Il est où le point d'interrogation?

        Je n'ai pas fait exprès de valider et tu ne m'as pas laisser le temps d'éditer mon message :(

        • Partager sur Facebook
        • Partager sur Twitter

        Débutant en programmation !!

          7 octobre 2020 à 14:43:41

          C'est exactement la même chose, tu fais un passage par référence et tu peux l'écrire des deux façons.

          • Partager sur Facebook
          • Partager sur Twitter
            7 octobre 2020 à 14:45:45

            Oui le C++ réutilise des symboles pour différentes choses, c'est un peu dommage mais sinon il y en aurait eu beaucoup trop à connaitre.
            Lors de la déclaration d'un type l'esperluette définit une référence. Exemple
            void f(Objet& obj)
            {
                // obj est une référence
            }
            
            int x;
            int& y = x; // y est une référence vers x.
            Cependant, lorsque l'on l'utilise devant une variable, là ce n'est plus une déclaration de référence mais l'opérateur d'adressage pour obtenir un pointeur (ce qui n'est pas du tout la même chose !)
            int x;
            int *y = &x; // &x == obtenir l'adresse mémoire de la variable x

            Enfin, sache que la position de & n'influe en rien son mécanisme. Toutes ces déclarations sont équivalentes :

            int x;
            
            int& y1 = x; // référence vers x
            int &y1 = x; // référence vers x
            
            int* p1 = & x; // pointeur
            int* p2 =  &x; // pointeur
            
            



            -
            Edité par markand 7 octobre 2020 à 14:47:18

            • Partager sur Facebook
            • Partager sur Twitter

            git is great because Linus did it, mercurial is better because he didn't.

              7 octobre 2020 à 15:13:45

              Merci tout le monde et surtout à markand pour cette explication bien détaillé, vous êtes mes héros <3

              • Partager sur Facebook
              • Partager sur Twitter

              Débutant en programmation !!

              Référence ou adresse ?

              × 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