Liaison de références lvalue non const à des types différents
En C , une référence lvalue non const doit se lier à une lvalue de la même taper. Cela peut prêter à confusion lorsque l'on tente de lier un objet temporaire à une référence non const, comme le montre l'exemple suivant :
int a; const double &m = a; // This is allowed double &m = a; // This produces an error
L'erreur "La référence lvalue non const au type 'double' ne peut pas être liée à une valeur de type non lié 'int'", indique qu'une référence d'un type non const ne peut pas se lier à un objet d'un type différent.
La raison de cette restriction est qu'un objet temporaire l'objet ne peut pas être lié à une référence non const. Lorsqu'un est converti en double, un objet temporaire est créé. En conséquence, la ligne de code suivante :
double &m = a;
Tente de lier une référence non const à un objet temporaire, ce qui n'est pas autorisé.
Cependant, il existe une exception à cette règle dans Visual Studio, où une extension du compilateur permet de lier des références non const à des objets temporaires. Cependant, ce comportement n'est pas standard et entraînera une erreur dans d'autres compilateurs comme GCC.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!