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

Quand les arguments de fonctions temporaires sont-ils détruits en C ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-16 09:42:12475parcourir

When Are Temporary Function Arguments Destroyed in C  ?

Arguments de fonction temporaires : timing de destruction

Lors de la création d'objets temporaires en tant qu'arguments de fonction, la gestion de leur durée de vie est cruciale pour l'exactitude du programme. C dicte la durée de vie de ces temporaires.

Dans l'exemple fourni :

class MyClass { MyClass(int a); };
myFunction(MyClass(42));

C garantit que le destructeur de l'objet temporaire MyClass est appelé à la fin de l'expression complète dont l'objet fait partie. Une expression complète se termine généralement par un point-virgule ; ou d'autres terminateurs de déclaration. Dans ce cas, l'expression complète se termine par la parenthèse fermante de l'appel de fonction maFonction().

Par conséquent, vous pouvez supposer que le destructeur de l'objet temporaire sera appelé avant l'exécution de la prochaine instruction suivant l'appel de fonction. .

Notez qu'il est possible d'étendre la durée de vie des temporaires au-delà de l'expression complète en les liant à une référence const. Cela étend leur durée de vie jusqu'à celle de la référence, comme illustré dans l'exemple suivant :

MyClass getMyClass();

{
  const MyClass& r = getMyClass(); // full expression ends here
  ...
} // object returned by getMyClass() is destroyed here

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