Appels explicites de destructeur : quand et pourquoi
En général, les appels explicites de destructeur ne sont pas recommandés en C . Cependant, des exceptions existent, comme illustré dans la section 13.4.5 de la norme C 11 :
<code class="cpp">template<class T> struct A { ~A(); }; void f(A<int>* p, A<int>* q) { p->A<int>::~A(); // OK: destructor call q->A<int>::~A<int>(); // OK: destructor call }</code>
Dans cet exemple, les appels explicites au destructeur sont autorisés car les objets en question ont été créés en utilisant le placement new. Pour détruire de tels objets, vous devez appeler explicitement leurs destructeurs.
Au-delà de la suppression de placement, il existe peu de raisons légitimes d'appeler explicitement un destructeur. Une possibilité consiste à détruire manuellement un objet trivialement destructible, bien que cela ne soit pas particulièrement utile.
Note supplémentaire
Une exception couramment citée à la règle consistant à éviter les appels explicites de destructeur concerne les variables locales. Cependant, ce n’est pas exact ; vous ne devez pas appeler explicitement des destructeurs sur des variables locales.
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!