La vraie question que vous devriez vous demander si vous avez besoin d'affecter le membre séparément de la classe. Il est généralement préférable de stocker le membre dans la classe plutôt que de stocker n'importe quel type de pointeur. Si vous ne pouvez pas le faire, si par exemple la durée de vie du membre commence avant ou après que le conteneur est créé, peut être étendu au-delà de la propriété du membre peut être céder à d'autres objets, vous devez utiliser des pointeurs. Une fois que vous avez besoin d'utiliser des pointeurs, vous devez préférer les pointeurs intelligents aux pointeurs bruts et sélectionner le type particulier en fonction de vos besoins. Si la propriété du membre ne doit pas être partagée avec d'autres objets, mais que vous devez utiliser un pointeur car la durée de vie de l'objet contenu peut commencer avant ou après celle du conteneur ou si la propriété peut être transférée à d'autres objets la ressource (sauf si cédée) est la seule responsabilité du conteneur, alors préférez unique_ptr
ou auto_ptr
.
Si l'objet contenu n'appartient pas uniquement à cette classe, utilisez un shared_ptr
. Cela peut également être utilisé si le membre est utilisé par différents threads, chaque thread conservant son propre shared_ptr
même si la propriété est détenue dans un seul thread, pour éviter de détruire l'objet dans un thread quand il est encore utilisé dans un autre thread .
Juste pour que vous sachiez, un chemin plus court de votre code est: 'cydo.reset (new int (5));'. Mais préférez la liste d'initialisation de toute façon. – GManNickG