Impact de la composition sur la gestion des ressources
Objectifs
Les objectifs de cette vidéo sont de:
- Comprendre la différence entre composition et agrégation.
- Apprendre à gérer la destruction et la copie des objets en composition.
- Utiliser les pointeurs intelligents pour simplifier la gestion des ressources.
Résumé
La vidéo explore la notion de composition en C++, son impact sur la gestion des ressources ainsi que l'utilisation des pointeurs intelligents.
Description
Dans cette leçon, nous allons examiner en détail la notion de composition en C++ et pourquoi elle est particulière. Contrairement à l'agrégation, la composition en UML indique un lien fort entre les objets, impliquant un cycle de vie partagé. Cela signifie que la durée de vie d'un objet dépend de celle d'un autre objet. Par exemple, une voiture comprenant un moteur démontre une composition: le moteur n'a pas d'existence sans la voiture.
Nous aborderons ensuite les difficultés associées à la composition en C++, notamment la destruction, la construction par copie, et l'affectation. Ces problèmes peuvent être résolus grâce à l'utilisation de pointeurs intelligents tels que unique_ptr et shared_ptr, introduits avec C++11.
Le lien fort en composition nécessite une gestion prudente des ressources. En cas de copie d'objets, la duplication superficielle des pointeurs peut entraîner des pointeurs invalides et des erreurs. Il est crucial de mettre en place des mécanismes de copie profonde ou d'interdire purement et simplement la copie pour éviter les fuites de mémoire.