Maison > développement back-end > C++ > Pourquoi les références Lvalue non-Const ne peuvent-elles pas se lier à des types différents en C ?

Pourquoi les références Lvalue non-Const ne peuvent-elles pas se lier à des types différents en C ?

Susan Sarandon
Libérer: 2024-12-03 00:14:11
original
1017 Les gens l'ont consulté

Why Can't Non-Const Lvalue References Bind to Dissimilar Types in C  ?

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
Copier après la connexion

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;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal