Maison > développement back-end > C++ > Combien de temps les arguments de fonction temporaires durent-ils en C ?

Combien de temps les arguments de fonction temporaires durent-ils en C ?

DDD
Libérer: 2024-12-27 07:06:17
original
991 Les gens l'ont consulté

How Long Do Temporary Function Arguments Live in C  ?

Comprendre la durée de vie des arguments de fonction temporaires

Lors de l'utilisation d'objets temporaires instanciés comme arguments de fonction, comme illustré ci-dessous :

class MyClass
{
  MyClass(int a);
};

myFunction(MyClass(42));
Copier après la connexion

Il est crucial de comprendre le comportement de leur destruction. La norme C fournit un aperçu du timing de leurs destructeurs.

Moment de destruction des arguments temporaires

Les objets temporaires atteignent leur fin à la fin de l'expression complète qu'ils habitent. Une expression complète désigne une expression autonome et non imbriquée dans une autre. Généralement, cela correspond au point-virgule (ou à la parenthèse fermante pour les instructions conditionnelles, loop et switch) désignant l'achèvement de l'instruction. Dans l'exemple donné, l'expression complète se termine par l'appel de fonction.

Prolongation de la durée de vie temporaire

Il est à noter que la durée de vie des temporaires peut être prolongée en les référençant comme un référence constante. Cette stratégie prolonge leur durée de vie pour correspondre à celle de la référence :

MyClass getMyClass();

{
  const MyClass& r = getMyClass(); // full expression ends here
  ...
} // object returned by getMyClass() is destroyed here
Copier après la connexion

L'utilisation de cette technique peut optimiser les performances en évitant un invocation inutile du constructeur de copie par rapport à l'utilisation de MyClass obj = getMyClass();. Cependant, sa prévalence est quelque peu faible.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal