depuis quelques temps, je me suis mis � utiliser les smart_ptr de boost (bien). jusqu'� pr�sent, j'ai toujours utilis� les shared_ptr car c'�tait les seuls pour lequels j'avais trouv� des exemples d'utilisation. Et puis, dernierement, j'ai decouvert l'existence des intrusive_ptr (ou plut�t, j'ai enfin compris comment ils fonctionnaient
).
Le truc, c'est qu'en lisant la doc, je suis tomb� sur ca :
mais pourquoi donc ?As a general rule, if it isn't obvious whether intrusive_ptr better fits your needs than shared_ptr, try a shared_ptr-based design first.
certe, l'utilisation des intrusive_ptr obligent � avoir un ref count et des fonctions en plus, mais du coup, on a plus besoin d'heriter de enable_shared_from_this quand on veut passer un pointeur this � un autre objet.
Le plus gros probl�me que je voit � cette approche est l'augmentation de la taille de la classe, ce qui n'est pas forcement id�ale dans le cas de petites classes (mais alors vraiment tr�s petite), et d'ailleurs, cet aventage est perdu si je doit heriter de enable_shared_from_this...
bref, le sujet du jour est :
- les shared_ptr c'est naze ?
- les intrusive_ptr c'est le mal ?
les pour et les contres (car la, j'ai vraiment du mal a choisir, et je ne sait pas si il faut que je passe au intrusive_ptr dans mon projet actuel, sachant que j'ai de plus en plus de classes qui heritent de enable_shared_from_this et que ca commence a franchement me fatiguer, en bref, pour moi, le choix n'est vraiment pas obvious pour reprendre le terme de la doc de boost
)
Partager