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

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

Linda Hamilton
Libérer: 2024-12-19 10:20:10
original
995 Les gens l'ont consulté

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

Pourquoi les références non-const à des objets temporaires sont interdites

C interdit d'attribuer des objets temporaires à des références non-const. Cette restriction vient du fait que les objets temporaires disparaissent après l'instruction dans laquelle ils ont été créés. Autoriser les références non const à des objets temporaires pourrait entraîner un comportement indéfini.

Considérez le code suivant :

String& a = String("test"); // Error
Copier après la connexion

Ce code tente d'attribuer un objet String temporaire à une référence non const. . Cependant, cela n'est pas autorisé car a n'est pas une référence const et les objets temporaires ne peuvent pas être modifiés.

Certaines raisons courantes de cette restriction incluent :

  • La modification d'objets temporaires pourrait entraîner des problèmes imprévisibles. résultats, car ils sont immédiatement détruits après la fin de leur instruction.
  • Il serait difficile de déterminer quand un objet temporaire a été modifié, ce qui pourrait entraîner des incohérences et erreurs.
  • Cela pourrait conduire à une complexité accrue du langage, le rendant plus difficile à comprendre et à utiliser.

C permet de lire à partir d'objets temporaires mais pas d'y écrire car la lecture le fait ne modifie pas l’état de l’objet. Cependant, écrire sur un objet temporaire peut avoir des conséquences inattendues, car l'objet peut être détruit avant la fin de l'opération d'écriture.

Par conséquent, pour éviter ces problèmes potentiels, C restreint les références non const aux objets temporaires, tout en permettant des références const à des fins de lecture en toute sécurité. Cette restriction permet de garantir l'exactitude du programme et empêche un comportement indéfini qui pourrait résulter de la modification d'objets 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!

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