Remplacement de la suppression par défaut par des destructeurs personnalisés pour les pointeurs partagés
shared_ptr de Boost utilise généralement la fonction de suppression pour détruire ses objets alloués. Cependant, il existe des scénarios dans lesquels les développeurs peuvent souhaiter utiliser des destructeurs personnalisés.
Remplacement de la suppression par défaut
Pour remplacer le comportement de suppression par défaut, vous pouvez utiliser une fonction membre comme destructeur personnalisé. Par exemple :
<code class="cpp">class CustomDeletable { public: void deleteMe() { // Implement custom deletion logic here } }; boost::shared_ptr<CustomDeletable> ptr(new CustomDeletable, &CustomDeletable::deleteMe);</code>
Gestion des fonctions de style C
Pour les fonctions de style C qui renvoient des pointeurs, vous pouvez utiliser un foncteur wrapper pour rediriger le processus de suppression :
<code class="cpp">// Custom destructor functor for C-style functions struct LibFreeFunctor { void operator()(void *ptr) { lib_freeXYZ(ptr); } }; // Usage with shared_ptr boost::shared_ptr<void> ptr(new void*, LibFreeFunctor());</code>
Utilisation des foncteurs wrapper de la STL
Alternativement, STL fournit des foncteurs wrapper qui peuvent être utilisés sans nécessiter d'appelant personnalisé :
<code class="cpp">boost::shared_ptr<T> ptr(new T, std::mem_fun_ref(&T::deleteMe)); boost::shared_ptr<S> ptr(new S, std::ptr_fun(lib_freeXYZ));</code>
En utilisant ces techniques, vous pouvez personnaliser shared_ptr pour appeler des destructeurs personnalisés, offrant ainsi une flexibilité dans la gestion de la durée de vie des objets et de la désallocation des ressources.
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!