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
Linda Hamiltonoriginal
2024-12-19 10:20:101056parcourir

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

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!

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