Maison > développement back-end > C++ > Pourquoi ne puis-je pas transmettre des objets temporaires à des références non const en C ?

Pourquoi ne puis-je pas transmettre des objets temporaires à des références non const en C ?

Susan Sarandon
Libérer: 2024-12-11 15:02:11
original
842 Les gens l'ont consulté

Why Can't I Pass Temporary Objects to Non-Const References in C  ?

Pourquoi seule une référence const est-elle autorisée pour les objets temporaires en C ?

En C, l'affectation d'objets temporaires est autorisée uniquement aux références const , tandis que les références non const sont interdites. Cette contrainte a suscité de nombreuses interrogations, notamment quant à la possibilité de modifier des objets temporaires.

Comme il est largement admis, les objets temporaires sont éphémères et disparaissent dès la fin de la déclaration contenant leur création. Cela soulève une préoccupation valable : pourquoi la modification est-elle restreinte alors que la lecture est autorisée ?

Pour comprendre cet écart, considérons une situation hypothétique impliquant un paramètre de fonction :

void inc(double& x)
{ x += 0.1; }

int i = 0;
inc(i);
Copier après la connexion

Si des références non const étaient autorisé pour les paramètres temporaires, le comportement de ce code serait particulier. Malgré le passage d'un argument int par référence, la valeur de i reste inchangée après l'appel de inc. Cela entraînerait des résultats imprévus et illogiques.

Autoriser les références const, cependant, garantit que l'objet temporaire transmis au paramètre de fonction ne peut pas être accidentellement modifié. Cela évite la possibilité d'un comportement inattendu et garantit que l'intention d'utiliser une référence const est respectée.

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