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

Pourquoi les références non-const ne peuvent-elles pas se lier à des valeurs L de différents types en C ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-23 04:30:20787parcourir

Why Can't Non-Const References Bind to Lvalues of Different Types in C  ?

Liaison de références non const à des valeurs L de différents types

En C , une référence lvalue non const (&) ne peut pas être liée à une lvalue d'un type différent, comme le démontre l'exemple ci-dessous :

int a;
double &m = a; // Error: non-const lvalue reference cannot bind to an lvalue of different type

C'est parce que la non-const la référence m tente de se lier à un objet temporaire créé lors de l'affectation. Les références non const ne peuvent pas se lier aux temporaires.

Cependant, considérons l'exemple suivant :

const double &m = a; // Valid

Dans ce cas, la référence const m est liée à une lvalue non const, et la la conversion de int en double est autorisée. En effet, la référence const protège la valeur sous-jacente contre toute modification, éliminant ainsi le risque de corruption des données qui pourrait résulter de la liaison d'une référence non const à une référence temporaire.

Par conséquent, lorsque vous tentez de lier une référence non const. const référence à une lvalue d'un type différent, une erreur se produira en raison de l'incapacité des références non const à se lier aux temporaires.

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!

Déclaration:
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