std::vector s'occupe de faire respecter (de mani�re transparente) le RAII sur un pointeur dont il est d�j� propri�taire � la base: c'est std::vector qui se charge d'appeler new pour pouvoir y placer ses �l�ments
Une "capsule RAII" (comme les pointeurs intelligents" accaparent la propri�t� (quitte � ce qu'elle soit partag�e) d'une ressource dont il ne sont pas propri�taire � la base:
Ce n'est ni std::unique_ptr ni std::shared_ptr qui appelle new, mais celui qui d�cide de leur confier la propri�t� (std::make_unique, std::make_shared, appel explicite � new de la part de l'utilisateur (de std*_ptr), factory, autres...)
On se rend compte qu'il y a donc bel et bien "une l�g�re diff�rence" -- et pourtant bien r�elle -- entre une classe appliquant le RAII automatiquement et de mani�re transparente pour une de ses ressources interne et une capsule RAII : la cr�ation de la ressource fait partie de son "frichti interne", alors qu'elle est totalement ext�rieure � la deuxi�me.
Ou, dit plus simplement, on pourrait dire qu'une capsule RAII n'a comme seule raison d'�tre que d'assurer une fin RAII � (la "destruction propre" de) la ressource dont elle prend la responsablilit�, alors que RAII en entier concerne �galement toutes les mani�res dont une classe peut acqu�rir les ressources dont elle est directement responsable.
Partager