Ce cours couvre les concepts avancés du C++ tels que la métaprogrammation, les templates, la gestion mémoire avancée et les optimisations de performance pour maîtriser les techniques expertes du langage. Il aborde également les bonnes pratiques, les design patterns et les outils modernes pour développer des applications robustes et efficaces. Ce PDF offre un support de cours complet et gratuit, conçu par Raffi Enficiaud, permettant aux apprenants d'approfondir leurs compétences en C++ et de se perfectionner. Le document inclut des exemples pratiques, des exercices et des explications détaillées pour devenir une référence dans le domaine du développement C++.
Cette formation s'adresse aux développeurs ayant déjà une expérience de base en C++ et souhaitant approfondir leurs connaissances pour créer des applications performantes et maintenables. Les professionnels travaillant sur des projets logiciels complexes, les ingénieurs en systèmes embarqués, et les étudiants en informatique avancée tireront particulièrement profit de ce cours. Une familiarité avec les concepts fondamentaux du C++ (pointeurs, classes, fonctions) est requise.
Le C++ est un langage puissant mais complexe, avec des particularités comme la gestion manuelle de la mémoire, les références, et les subtilités de la surcharge d'opérateurs. Ce module abordera ces défis en fournissant des bonnes pratiques pour éviter les pièges courants (fuites mémoire, undefined behavior) et en expliquant des outils comme les smart pointers.
Un rappel des structures de contrôle (boucles, conditions), des opérateurs, et des fonctions sera proposé, avec un focus sur les spécificités du C++ (e.g., références vs pointeurs). Les participants reviendront également sur les meilleures pratiques pour écrire un code clair et efficace.
Approfondissement des classes : constructeurs/destructeurs, méthodes statiques, opérateurs, et encapsulation. Seront également couverts les move constructors et la sémantique de déplacement introduits en C++11 pour optimiser les performances.
L'héritage simple et multiple, le polymorphisme (fonctions virtuelles), et les interfaces seront expliqués avec des exemples concrets. Les participants apprendront à concevoir des hiérarchies de classes flexibles et à utiliser les abstract classes.
Gestion robuste des erreurs via les exceptions : try/catch, création d'exceptions personnalisées, et bonnes pratiques pour éviter les anti-patterns (e.g., utiliser les exceptions pour le contrôle de flux).
Application des concepts sur un projet simulé (e.g., système de gestion de ressources) pour consolider les apprentissages. Les participants travailleront en groupe sur des problèmes réels, avec revue de code.
Programmation générique avec les templates : fonctions et classes templates, spécialisation, et métaprogrammation basique. Ce module montrera comment les templates permettent d'éviter la duplication de code.
Utilisation avancée de la Standard Template Library : conteneurs (vector, map), algorithmes (sort, find), et itérateurs. Les performances des différentes structures de données seront comparées.
Implémentation en C++ des patterns courants (Singleton, Factory, Observer) avec des exemples adaptés aux particularités du langage (RAII, gestion mémoire).
Intégration de librairies tierces (e.g., Qt pour l'UI, OpenCV pour le traitement d'images). Les bonnes pratiques pour lier et utiliser des dépendances seront expliquées.
Découverte de Boost, une collection de librairies pour étendre le C++ (filesystem, threads, smart pointers). Les participants apprendront à installer et exploiter ces modules.
Techniques avancées : profiling, inline assembly, optimisation des appels de fonctions, et utilisation des cache. Ce module couvrira aussi les fonctionnalités C++20 comme les coroutines.
Partner sites PDF Tutorials (English) | PDF Manuales (Spanish) | Cours PDF (French)