More Exceptional C++
272 pages
French
PDF
4.5

More Exceptional C++

More Exceptional C++

Auteur :

Année :

Résumé :

Introduction

Le livre « More Exceptional C++ » (2001) est la suite du célèbre recueil de problèmes et de solutions de Herb Sutter, l'un des principaux experts du langage C++. Si le premier livre « Exceptional C++ » a posé les bases d'une compréhension approfondie des exceptions, de la gestion de la mémoire et de la conception de classes, la deuxième partie élève encore la barre. Ici, l'auteur propose 40 nouveaux problèmes (Items), répartis en sections thématiques, qui couvrent à la fois des problèmes classiques (sécurité des exceptions, RAII, idiomes) et des sujets plus avancés : optimisation de la STL, subtilités de l'héritage, templates et même des questions de multithreading (dans le contexte de C++98/03). Le livre est écrit au format « question-réponse » : d'abord, un problème est posé, puis une analyse détaillée est fournie avec du code, une analyse et des conclusions. Ce n'est pas un manuel pour débutants — c'est un recueil d'énigmes pour ceux qui écrivent déjà couramment en C++ et souhaitent éviter les pièges typiques.

De quoi parle le livre

Le thème principal est la sécurité des exceptions et la gestion correcte des ressources. Sutter analyse systématiquement comment écrire du code qui ne « fuit » pas lors de la levée d'exceptions, comment utiliser l'idiome RAII (Resource Acquisition Is Initialization) et comment concevoir des classes résistantes à l'exécution partielle des opérations. Le livre aborde également :

  • Les règles de surcharge des opérateurs (notamment operator= et operator[]);
  • Les subtilités du travail avec les conteneurs STL (std::vector, std::list, std::map);
  • Les idiomes « pimpl » (pointer to implementation) et « copy-and-swap »;
  • Les problèmes de l'héritage multiple et des classes de base virtuelles ;
  • L'optimisation du code à l'aide de templates et de stratégies (policy-based design);
  • La gestion des erreurs dans les constructeurs et les destructeurs.

Chaque chapitre contient des exemples de code concrets qui peuvent être immédiatement appliqués dans des projets réels. Sutter ne se contente pas de donner des solutions toutes faites, il explique également pourquoi d'autres approches sont erronées et quelles conséquences peuvent en découler.

Pour qui est ce livre

Le livre est destiné aux développeurs C++ expérimentés qui connaissent déjà la syntaxe, les classes, l'héritage et les templates. Il sera utile :

  • Aux programmeurs travaillant sur des systèmes hautement fiables (finance, télécoms, systèmes embarqués);
  • Aux développeurs de bibliothèques et de frameworks où la stabilité de l'API est importante ;
  • Aux étudiants de cycle supérieur et aux doctorants étudiant les concepts avancés du C++ ;
  • À tous ceux qui souhaitent améliorer leurs compétences en débogage et en refactorisation de code complexe.

Les débutants trouveront le livre difficile — il est préférable de commencer par « Exceptional C++ » ou « Effective C++ » de Scott Meyers.

Ce que le lecteur apprendra

Après la lecture, vous serez capable de :

  • Garantir la sécurité des exceptions à trois niveaux (basic, strong, nothrow);
  • Implémenter correctement les opérateurs d'affectation et de copie ;
  • Éviter les fuites de mémoire et de ressources dans les constructeurs ;
  • Optimiser l'utilisation des conteneurs STL (par exemple, éviter les copies inutiles);
  • Appliquer l'idiome « copy-and-swap » pour écrire un operator= fiable ;
  • Comprendre quand utiliser l'héritage virtuel et quand utiliser la composition ;
  • Concevoir des classes en tenant compte des exceptions possibles dans les destructeurs.

Points forts

Le principal atout du livre est son orientation pratique. Chaque problème est accompagné de code réel qui peut être compilé et testé. Sutter n'a pas peur de montrer des variantes incorrectes et d'expliquer pourquoi elles sont dangereuses. Le deuxième avantage est la structure : le livre est divisé en petits chapitres (2 à 5 pages), ce qui permet de le lire par intermittence, en revenant sur les sujets complexes. Le troisième est l'accent mis sur la sécurité des exceptions, qui reste pertinente même 20 ans plus tard : le C++ moderne (C++11/14/17/20) a ajouté de nouveaux outils (sémantique de déplacement, unique_ptr, optional), mais les principes de base énoncés par Sutter n'ont pas vieilli. Enfin, le style de l'auteur — vivant, avec une pointe d'humour et d'auto-dérision — rend

Recommendations