Maison > développement back-end > C++ > Comment puis-je prolonger la durée de vie des objets temporaires en C à l'aide de références Const ?

Comment puis-je prolonger la durée de vie des objets temporaires en C à l'aide de références Const ?

Barbara Streisand
Libérer: 2024-10-26 19:45:02
original
643 Les gens l'ont consulté

How Can I Extend the Lifetime of Temporary Objects in C   Using Const References?

Liaison d'objets temporaires à des références Const

En C , les objets temporaires expirent généralement à la fin de l'expression dans laquelle ils apparaissent, ce qui peut conduire à des références pendantes. Cependant, le langage offre une fonctionnalité unique qui permet de prolonger la durée de vie des temporaires lorsqu'ils sont liés à des références const.

Le code suivant illustre ce concept :

<code class="cpp">string foo() {
  return string("123");
}

int main() {
  const string& val = foo();
  printf("%s\n", val.c_str());
  return 0;
}</code>
Copier après la connexion

Même si foo() renvoie un temporaire chaîne, l'affectation à la valeur de référence const prolonge la durée de vie du temporaire jusqu'à ce que la référence elle-même expire. Il s'agit d'un comportement prévu selon la norme C, garantissant que val pointe toujours vers un objet valide.

Cependant, il est important de noter que cette exception s'applique uniquement aux références basées sur la pile. Les références membres d'objets ne prolongent pas la durée de vie de leurs objets temporaires liés. Pour plus de détails sur cette fonctionnalité, reportez-vous à "GotW #88: A Candidate For the "Most Important const" de Herb Sutter.

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