Comment activate_shared_from_this aide-t-il à conserver la propriété des objets ?
En explorant les exemples Boost.Asio, vous avez peut-être rencontré activate_shared_from_this. Malgré la référence à la documentation, son utilisation reste floue. Voici une explication complète et un exemple pour clarifier son objectif.
enable_shared_from_this vous permet de créer une instance shared_ptr valide pour l'objet lorsque vous n'avez accès qu'à l'objet lui-même (représenté par ceci). Sans cela, obtenir un shared_ptr pour cela serait impossible à moins qu'il ne soit déjà défini en tant que membre.
Considérez l'exemple suivant :
class Y: public enable_shared_from_this<Y> { public: shared_ptr<Y> f() { return shared_from_this(); } };
Ici, la méthode f() peut renvoyer un valide shared_ptr, même s'il lui manque une instance membre. Notez que l'approche suivante échouerait :
class Y: public enable_shared_from_this<Y> { public: shared_ptr<Y> f() { return shared_ptr<Y>(this); } };
Le résultat serait deux shared_ptrs avec des nombres de références différents. Lorsque l'objet est supprimé, l'un d'entre eux deviendra une référence pendante.
Il est important de noter que activate_shared_from_this fait désormais partie du standard C 11, le rendant accessible depuis là ainsi que depuis Boost.
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!