91 votes

erreur : initialisation invalide d'une référence non const de type 'int&' à partir d'une rvalue de type 'int'

Forme incorrecte :

 int &z = 12;

Forme correcte:

 int y;
int &r = y;

Question : Pourquoi le premier code est-il faux ? Quel est le « sens » de l'erreur dans le titre ?

10voto

12 est une constante de compilation qui ne peut pas être modifiée contrairement aux données référencées par int& . Ce que vous pouvez faire, c'est

 const int& z = 12;

0voto

Basile Starynkevitch Points 67055

Les références sont des "pointeurs cachés" (non nuls) vers des choses qui peuvent changer (lvalues). Vous ne pouvez pas les définir sur une constante. Ce devrait être une chose "variable".

ÉDITER::

Je pense à

 int &x = y;

comme presque l'équivalent de

 int* __px = &y;
#define x (*__px)

__px est un nouveau nom, et le #define x ne fonctionne qu'à l'intérieur du bloc contenant la déclaration de la référence x

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X