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
Barbara Streisandoriginal
2024-11-12 17:34:02328parcourir

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';

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!

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