Maison >développement back-end >C++ >Combien de temps les arguments de fonction temporaires durent-ils en 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));
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
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!