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 :/
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
git is great because Linus did it, mercurial is better because he didn't.
Merci tout le monde et surtout à markand pour cette explication bien détaillé, vous êtes mes héros <3
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.
Débutant en programmation !!
« 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
Débutant en programmation !!
git is great because Linus did it, mercurial is better because he didn't.
Débutant en programmation !!