Maison > développement back-end > C++ > Quand les objets temporaires sont-ils détruits en C ?

Quand les objets temporaires sont-ils détruits en C ?

Barbara Streisand
Libérer: 2024-11-12 17:34:02
original
325 Les gens l'ont consulté

When are Temporary Objects Destroyed in C  ?

Destruction d'objets temporaires en C

En C, des objets temporaires sont créés à la demande lors de l'évaluation des expressions. Ces objets n'existent que dans le cadre de l'expression et sont automatiquement détruits une fois celle-ci terminée.

Considérons l'exemple suivant avec trois lignes de code :

Foo foo{"three"};
Foo{"one"};
std::cout << "two" << '\n';
Copier après la connexion

Le code imprime "un", " deux" et "trois" dans cet ordre. Ce comportement découle des règles suivantes régissant la destruction d'objets temporaires :

Destruction à la fin de l'évaluation de l'expression

Les objets temporaires sont détruits à la fin de l'évaluation de l'expression complète dans laquelle ils ont été créés. Dans cet exemple, les objets temporaires pour "un" et "trois" sont détruits après les lignes respectives dans lesquelles ils résident.

Exceptions à la règle

Tandis que l'objet temporaire la destruction suit généralement cette règle, des exceptions spécifiques existent, comme indiqué dans [class.temporary] p4-p7 :

  1. Durée de vie raccourcie des objets temporaires construits par défaut dans les initialiseurs de tableau.
  2. Raccourcie durée de vie des arguments du constructeur par défaut lors de la copie d'un tableau.
  3. Durée de vie étendue des objets temporaires en leur liant une référence.
  4. Durée de vie étendue des objets temporaires dans un initialiseur for-range.

Dans l'exemple fourni, aucune de ces exceptions ne s'applique, donc les objets temporaires sont détruits après leurs lignes respectives, ce qui entraîne la sortie spécifié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!

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