Maison > développement back-end > C++ > le corps du texte

Pourquoi les références non const ne peuvent-elles pas se lier à des valeurs L ou temporaires non liées en C ?

Mary-Kate Olsen
Libérer: 2024-11-25 22:17:11
original
379 Les gens l'ont consulté

Why Can't Non-Const References Bind to Unrelated Lvalues or Temporaries in C  ?

Restrictions de liaison de référence non const

En C , les références const peuvent se lier à des lvalues ​​du même type et à des types non liés. Cependant, les références non const sont confrontées à des restrictions supplémentaires lors de la liaison à des lvalues.

Échec de liaison de Lvalue non lié

Considérez le code suivant :

int a;
double &m = a; // error: non-const lvalue reference to type 'double' cannot bind to a value of unrelated type 'int'
Copier après la connexion

Ici, la référence non const m est tentée d'être liée à une lvalue de type int. Cela échoue car les références non const ne peuvent pas se lier à des lvalues ​​non liées.

Interdiction de liaison d'objet temporaire

Les références non const ne peuvent pas non plus se lier à des objets temporaires. Par exemple :

double &m = a; // compilation error: temporary bound to non-const reference
Copier après la connexion

Dans ce cas, l'affectation de a à m implique de convertir un int en double et de créer un objet temporaire. Les références non const ne peuvent pas se lier à de tels objets temporaires.

La raison derrière cette restriction est que les références non const nécessitent l'accès à l'adresse de l'objet d'origine, ce qui n'est pas possible pour les objets temporaires puisqu'ils sont détruits immédiatement après utilisation. .

Extension du compilateur Visual Studio

Il est important de noter que dans Visual Studio, cette erreur peut ne se produit pas en raison d'une extension du compilateur qui permet la liaison à des objets temporaires dans certains cas. Cependant, d'autres compilateurs comme GCC appliqueront strictement la règle non contraignante.

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