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

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

Mary-Kate Olsen
Libérer: 2024-12-16 01:53:09
original
926 Les gens l'ont consulté

When Are C   Temporary Objects Destroyed?

Durée de vie garantie des objets temporaires en C

En C , une variable temporaire est créée lorsqu'une expression est évaluée à une valeur qui n'est pas stockée dans une variable nommée. Dans le code donné, un objet StringBuffer temporaire est créé dans l'appel de fonction GetString() :

StringBuffer(mystring).Size(MAXLEN)
Copier après la connexion

La question se pose de savoir quand le destructeur de cet objet temporaire sera appelé :

Durée de vie des objets temporaires :

C garantit que la durée de vie d'un objet temporaire s'étend jusqu'à la fin de l'expression complète dans laquelle il est créé. Une expression complète est l’expression la plus externe qui ne fait partie d’aucune autre expression. Dans ce cas, l'expression complète est l'intégralité de l'appel de fonction GetString() :

GetString(StringBuffer(mystring).Size(MAXLEN), MAXLEN);
Copier après la connexion

Temps de destruction :

Par conséquent, le destructeur de l'objet StringBuffer temporaire sera appelé après le retour de la fonction GetString() et la valeur est évaluée. Ce comportement est garanti par le standard C en 12.2 « Objets temporaires ».

Importance pour les modèles d'expression :

Cette garantie à vie est cruciale pour les modèles d'expression, qui peuvent contenir références à des objets temporaires dans des expressions. Par exemple, le modèle d'expression suivant :

e = a + b * c / d
Copier après la connexion

Peut conserver les références aux objets temporaires créés par chaque opérande car la durée de vie de chaque objet temporaire s'étend jusqu'à la fin de l'expression entière.

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