Maison > Article > développement back-end > Comment std::shared_ptr garantit-il des appels de destructeur appropriés pendant le nettoyage ?
Introduction
L'utilisation de std::shared_ptr
Tapez Erasure dans std::shared_ptr
La clé de la compréhension de ce comportement réside dans la manière dont std::shared_ptr effectue l'effacement de type. Une fois créé, un pointeur partagé stocke une fonction de suppression qui détermine la manière dont son objet géré doit être détruit. Ce suppresseur peut être explicitement spécifié ou supprime par défaut l'objet en utilisant delete.
Préservation des informations sur le destructeur
Lorsqu'un shared_ptr est copié ou construit à partir d'un autre, la fonction de suppression est conservé. Cela signifie que même lors de la diffusion depuis std::shared_ptr
Exemple d'illustration
Le code fourni dans la question démontre cette fonctionnalité. Les lignes suivantes expliquent le comportement :
<code class="cpp">v.push_back(std::shared_ptr<test>(new test()));</code>
Ici, un shared_ptr vers une instance de class test est créé et ajouté au vecteur v.
<code class="cpp">v.push_back(static_cast<std::shared_ptr<void>>(v.back()));</code>
Le shared_ptr à tester est alors explicitement converti en std::shared_ptr
Conformité à la norme
Le comportement de std::shared_ptr
Conclusion
Alors que std::shared_ptr
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!