En C , les objets temporaires expirent généralement à la fin de l'expression dans laquelle ils apparaissent, ce qui peut conduire à des références pendantes. Cependant, le langage offre une fonctionnalité unique qui permet de prolonger la durée de vie des temporaires lorsqu'ils sont liés à des références const.
Le code suivant illustre ce concept :
<code class="cpp">string foo() { return string("123"); } int main() { const string& val = foo(); printf("%s\n", val.c_str()); return 0; }</code>
Même si foo() renvoie un temporaire chaîne, l'affectation à la valeur de référence const prolonge la durée de vie du temporaire jusqu'à ce que la référence elle-même expire. Il s'agit d'un comportement prévu selon la norme C, garantissant que val pointe toujours vers un objet valide.
Cependant, il est important de noter que cette exception s'applique uniquement aux références basées sur la pile. Les références membres d'objets ne prolongent pas la durée de vie de leurs objets temporaires liés. Pour plus de détails sur cette fonctionnalité, reportez-vous à "GotW #88: A Candidate For the "Most Important const" de Herb Sutter.
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!