Destruction d'objets temporaires en C
En C, des objets temporaires sont créés à la demande lors de l'évaluation des expressions. Ces objets n'existent que dans le cadre de l'expression et sont automatiquement détruits une fois celle-ci terminée.
Considérons l'exemple suivant avec trois lignes de code :
Foo foo{"three"}; Foo{"one"}; std::cout << "two" << '\n';
Le code imprime "un", " deux" et "trois" dans cet ordre. Ce comportement découle des règles suivantes régissant la destruction d'objets temporaires :
Destruction à la fin de l'évaluation de l'expression
Les objets temporaires sont détruits à la fin de l'évaluation de l'expression complète dans laquelle ils ont été créés. Dans cet exemple, les objets temporaires pour "un" et "trois" sont détruits après les lignes respectives dans lesquelles ils résident.
Exceptions à la règle
Tandis que l'objet temporaire la destruction suit généralement cette règle, des exceptions spécifiques existent, comme indiqué dans [class.temporary] p4-p7 :
Dans l'exemple fourni, aucune de ces exceptions ne s'applique, donc les objets temporaires sont détruits après leurs lignes respectives, ce qui entraîne la sortie spécifiée.
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!