Maison > développement back-end > C++ > le corps du texte

Comment les références Const sur la pile prolongent-elles la durée de vie des objets temporaires en C ?

Patricia Arquette
Libérer: 2024-10-26 19:11:02
original
979 Les gens l'ont consulté

How Do Const References on the Stack Extend the Lifetime of Temporary Objects in C  ?

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

En C , lier un objet temporaire à une référence à const sur la pile prolonge sa durée de vie à cela de la référence elle-même. Cette exception à la règle selon laquelle les objets temporaires expirent généralement à la fin de l'expression englobante permet plus de flexibilité et de sécurité dans le traitement des objets temporaires.

Considérez le code suivant :

<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

Ici , un objet chaîne temporaire est renvoyé par la fonction foo(). Généralement, ce temporaire cesserait d'exister à la fin de l'expression complète impliquant foo(). Cependant, en la liant à la valeur de référence constante, la durée de vie de la chaîne temporaire est prolongée jusqu'à l'accolade fermante.

Cet écart par rapport aux règles habituelles de durée de vie temporaire permet d'obtenir un code plus sûr qui évite les références pendantes. Dans l'exemple ci-dessus, la chaîne temporaire liée à val est garantie d'exister tant que val existe.

Notez que cette propriété s'applique uniquement aux références à const sur la pile. Il ne prolonge pas la durée de vie des objets temporaires référencés par les variables membres des objets.

Pour une compréhension plus approfondie, reportez-vous à GotW #88 de Herb Sutter : Un candidat pour la « const la plus importante » disponible ici : https://www.gotw.ca/publications/mill19.htm.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!