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
Susan Sarandonoriginal
2024-12-11 15:02:11776parcourir

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);

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!

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