Chapitre 10 – Rule of Zero
Résumé – Chap 10 – Rule of Zero Lorsqu’une classe gère elle-même une ressource dynamique, le destructeur n’est rapidement plus la seule fonction spéciale dont il faut se préoccuper. Une classe contenant un pointeur vers une zone allouée dynamiquement peut libérer cette mémoire dans son destructeur, mais la copie par défaut ne copie que la […]
Chapitre 9 – Quelques outils du C++ moderne
Résumé – Chap 9 – Quelques outils du C++ moderne Le C++ moderne apporte plusieurs outils qui ne modifient pas fondamentalement la manière de programmer, mais rendent le code plus lisible, plus sûr et plus expressif. auto permet au compilateur de déduire le type d’une variable à partir de son initialisation sans supprimer le typage […]
Chapitre 8 – Les expressions lambda
Résumé – Chap 8 – Les expressions lambda Une expression lambda permet de définir directement une opération à l’endroit où elle doit être utilisée, sans devoir créer séparément une fonction classique. Elle est particulièrement adaptée aux algorithmes de la bibliothèque standard auxquels il faut fournir un comportement, par exemple une condition de recherche, une transformation […]
Chapitre 7 – Intégrateurs et algorithmes de la bibliothèque standard
Résumé – Chap 7 – Itérateurs et algorithmes de la bibliothèque standard Les conteneurs de la bibliothèque standard n’organisent pas tous leurs éléments de la même manière : std::vector permet un accès direct par indice, alors que d’autres structures, comme std::list, ne le permettent pas. Les itérateurs fournissent une manière commune de parcourir ces conteneurs […]
Chapitre 6 – stp::vector et les conteneurs modernes
Résumé – Chap 6 – std::vector et les conteneurs modernes La gestion manuelle d’un tableau dynamique impose au programmeur de s’occuper de l’allocation avec new[], de la libération avec delete[], de la taille de la zone, ainsi que des éventuelles opérations de copie ou de redimensionnement. Les conteneurs de la bibliothèque standard prennent en charge […]
Chapitre 5 – std::shared_ptr et std::weak_ptr
Résumé – Chap 5 – std::shared_ptr et std::weak_ptr std::unique_ptr convient lorsqu’une ressource possède un seul propriétaire, mais certaines architectures nécessitent que plusieurs objets partagent réellement la propriété d’une même ressource. std::shared_ptr répond à cette situation : plusieurs shared_ptr peuvent désigner le même objet et chacun participe à sa propriété. Contrairement à unique_ptr, un shared_ptr peut […]
Chapitre 4 – stp::unique_ptr en pratique
Chap 4 – std::unique_ptr en pratique Après l’étude de la sémantique de déplacement, std::unique_ptr peut être utilisé pleinement comme outil de gestion d’une ressource à propriétaire unique. La création d’un objet dynamique se fait généralement avec std::make_unique, qui construit l’objet et confie immédiatement sa propriété au unique_ptr. L’accès à la ressource reste proche de celui […]
Chapitre 3 – La sémantiquement de déplacement
Résumé – Chap 3 – La sémantique de déplacement La sémantique de déplacement répond à une situation différente de la copie. Lors d’une copie, l’objet d’origine conserve son contenu tandis qu’un nouvel objet reçoit sa propre copie de la ressource. Cette opération peut devenir coûteuse lorsqu’un objet possède, par exemple, une zone mémoire contenant plusieurs […]
Chapitre 9 – La classe Matrice<T>
Résumé – Chap 9 – La classe Matrice<T> La première version de Matrice stockait uniquement des coefficients de type double. Créer ensuite une classe pour les int, une autre pour les float et ainsi de suite obligerait à recopier les mêmes algorithmes. Le but du chapitre est donc de transformer cette classe déjà complète en […]