Choisissez votre langue
Formation C++ avancé
Plus de 2 millions d'étudiants dans le monde

Formation C++ avancé

Amenez votre expertise C++ au niveau qui distingue les ingénieurs seniors des autres. Ce cours couvre les fonctionnalités modernes de C++20, la métaprogrammation avancée de modèles, la concurrence sans verrou et l'architecture à grande échelle. Vous écrirez un code système plus rapide, plus sûr et plus maintenable dès le premier jour.

Dedika pour les entreprises

Ce que vous allez apprendre:

Vous maîtriserez les fonctionnalités de C++11 à C++20, y compris la sémantique de déplacement, les modèles variadiques et les coroutines. Le cours vous apprend à concevoir des allocateurs mémoire personnalisés, à construire des structures de données sans verrou, et à appliquer les intrinsèques SIMD pour un débit maximal. Vous implémenterez des patrons de conception avancés tels que CRTP, l'effacement de type et les modèles d'expression. Les systèmes de construction, la stabilité ABI, l'analyse statique et l'intégration CI sont couverts pour que vous puissiez contribuer à des bases de code de qualité professionnelle. Vous explorerez également les plages C++20, les techniques C++ embarqué, l'interopérabilité entre langages et les pratiques de codage soucieuses de la sécurité.

Comment vous étudiez de façon pratique Formation C++ avancé

Comment vous pratiquez Formation C++ avancé

Pour vous, entreprise, qui souhaitez former votre équipe

Avec Dedika pour les entreprises, le cours inclut des exercices et des exemples adaptés à votre propre activité et aux besoins spécifiques de votre entreprise.

Cliquez ici

Contenu du cours

8 Chapitres • 39 LeçonsDurée entre 4 et 360 heures (vous décidez)

Chapitre 1Voir les détails

Révision des fondamentaux du C++ moderne

  • Leçon 1 • Initialisation uniforme et liaisons structurées

    Explique l'initialisation par accolades, les listes d'initialisation et les liaisons structurées de C++17. Réduit les bugs d'initialisation courants dans les chapitres suivants.

  • Leçon 2 • Sémantique de déplacement et catégories de valeurs

    Explique les lvalues, rvalues et xvalues avec std::move et std::forward. Permet un transfert efficace des ressources tout au long du cours.

  • Leçon 3 • Pointeurs intelligents et possession

    Couvre les sémantiques de possession de unique_ptr, shared_ptr et weak_ptr. Construit la base de sécurité mémoire nécessaire à la gestion avancée des ressources.

  • Leçon 4 • Expressions lambda en profondeur

    Enseigne les modes de capture, les lambdas génériques et les lambdas mutables. Prépare les étudiants aux algorithmes de style fonctionnel et aux fonctions de rappel.

  • Leçon 5 • Inférence de type et utilisation de auto

    Couvre auto, decltype et les types de retour suffixés avec précision. Établit l'intuition de déduction de type nécessaire pour les modèles plus tard.

Chapitre 2Voir les détails

Fondamentaux de la métaprogrammation de modèles

  • Leçon 1 • Techniques SFINAE et Enable_if

    Explique l'échec de substitution, std::enable_if et les idiomes void_t. Permet l'activation conditionnelle de modèles basée sur les propriétés des types.

  • Leçon 2 • Traits de type et calcul à la compilation

    Couvre la bibliothèque type_traits et constexpr if pour les branchements à la compilation. Les étudiants écrivent du code générique sans surcoût avec des assertions statiques.

  • Leçon 3 • Modèles variadiques

    Enseigne les packs de paramètres, l'expansion de packs et les expressions de repli. Débloque la construction de conteneurs et d'utilitaires hétérogènes type-safe.

  • Leçon 4 • Bases des modèles de fonctions et de classes

    Introduit la syntaxe des modèles, l'instanciation et les règles de déduction d'arguments. Fournit le vocabulaire pour tous les sujets de métaprogrammation suivants.

  • Leçon 5 • Spécialisation et surcharge de modèles

    Couvre la spécialisation totale et partielle ainsi que la surcharge de modèles de fonctions. Permet une personnalisation précise du comportement pour des types spécifiques.

Chapitre 3Voir les détails

Concepts et contraintes en C++20

  • Leçon 1 • Contrainte des modèles de fonctions et de classes

    Applique les concepts aux signatures de fonctions et aux modèles de classes via des clauses requires. Remplace le verbeux SFINAE par des contraintes expressives.

  • Leçon 2 • Syntaxe et définition des concepts

    Introduit le mot-clé concept, les expressions requires et la conjonction de contraintes. Établit le nouveau vocabulaire pour les modèles contraints.

  • Leçon 3 • Concepts de la bibliothèque standard

    Passe en revue les concepts dans les en-têtes <concepts> et ranges, y compris Sortable et Range. Permet une utilisation idiomatique de la bibliothèque standard C++20.

  • Leçon 4 • Subsumption et ordre des concepts

    Explique comment le compilateur ordonne les surcharges par subsumption de concepts. Les étudiants conçoivent des hiérarchies de concepts qui résolvent correctement l'ambiguïté.

Chapitre 4Voir les détails

Gestion avancée de la mémoire

  • Leçon 1 • Pools mémoire et allocation par arène

    Couvre les allocateurs par pool, les allocateurs par arène et les stratégies de pointeur à incrémentation. Réduit la fragmentation et la latence d'allocation dans les chemins chauds.

  • Leçon 2 • Placement new et durée de vie des objets

    Enseigne la construction manuelle d'objets dans des tampons pré-alloués en utilisant placement new. Clarifie les règles de durée de vie des objets pour éviter les comportements indéfinis.

  • Leçon 3 • Sécurité mémoire et outils de sanitisation

    Introduit AddressSanitizer, Valgrind et les sanitiseurs de comportement indéfini. Les étudiants détectent et corrigent les erreurs mémoire de manière systématique.

  • Leçon 4 • Stockage aligné et alignement SIMD

    Couvre alignas, alignof et std::aligned_storage pour des données alignées sur le matériel. Prépare les étudiants à l'optimisation SIMD et des lignes de cache.

  • Leçon 5 • Modèle d'allocateur et allocateurs personnalisés

    Explique l'interface d'allocateur C++ et comment les conteneurs l'utilisent. Les étudiants mettent en œuvre des allocateurs personnalisés pour contrôler les sources de mémoire.

Chapitre 5Voir les détails

Concurrence et parallélisme

  • Leçon 1 • Coroutines C++20 pour la concurrence

    Introduit co_await, co_yield et les handles de coroutine pour les workflows asynchrones. Relie la mécanique des coroutines aux motifs pratiques d'E/S asynchrones.

  • Leçon 2 • Threads, mutex et variables conditionnelles

    Couvre std::thread, les variantes de mutex et condition_variable pour la synchronisation. Construit des compétences pratiques pour les motifs producteur-consommateur et données protégées.

  • Leçon 3 • Fondamentaux du modèle mémoire C++

    Explique la relation se-produit-avant, l'ordre séquentiellement cohérent et les situations de compétition. Fournit la base théorique pour tout travail de concurrence.

  • Leçon 4 • Atomiques et programmation sans verrou

    Enseigne les opérations std::atomic et compare-exchange pour les structures sans verrou. Les étudiants mettent en œuvre des compteurs sans attente et des files d'attente sans verrou.

  • Leçon 5 • Futures, promesses et tâches asynchrones

    Couvre std::future, std::promise et std::async pour la concurrence basée sur les tâches. Permet un passage de résultat asynchrone propre sans threads bruts.

Chapitre 6Voir les détails

Techniques d'optimisation des performances

  • Leçon 1 • Optimisations et indications du compilateur

    Couvre l'inlining, l'optimisation au moment de l'édition des liens et les indications likely/unlikely. Les étudiants guident le compilateur pour générer un code machine plus rapide.

  • Leçon 2 • Réduction des allocations et des copies

    Couvre l'optimisation des petits tampons, l'élision de copie et les garanties RVO/NRVO. Les étudiants éliminent les coûts d'allocation cachés dans le code de production.

  • Leçon 3 • Workflow de profilage et de benchmarking

    Couvre perf, gprof et Google Benchmark pour mesurer les points chauds. Établit une méthodologie d'optimisation basée sur les données utilisée tout au long du chapitre.

  • Leçon 4 • Intrinsèques SIMD et vectorisation

    Introduit l'auto-vectorisation et les intrinsèques SIMD manuels pour le parallélisme de données. Permet des accélérations d'un ordre de grandeur sur les charges de travail numériques.

  • Leçon 5 • Structures de données adaptées au cache

    Explique la hiérarchie du cache, la localité spatiale et la disposition structure-de-tableaux. Les étudiants reconçoivent les structures de données pour minimiser les échecs de cache.

Chapitre 7Voir les détails

Patrons de conception avancés en C++

  • Leçon 1 • Conception basée sur des politiques

    Enseigne l'idiome de classe de politique pour l'injection de comportement à la compilation. Remplace le dispatch virtuel par un polymorphisme statique sans coût.

  • Leçon 2 • Patrons de réflexion à la compilation

    Couvre la réflexion manuelle en utilisant des listes de types, des maps constexpr et des X-macros. Prépare les étudiants à la réflexion C++26 lorsqu'elle sera disponible.

  • Leçon 3 • Techniques d'effacement de type

    Explique std::any, std::function et les wrappers d'effacement de type personnalisés. Permet le polymorphisme à l'exécution sans hiérarchies d'héritage.

  • Leçon 4 • Modèles d'expression

    Introduit les modèles d'expression pour l'évaluation paresseuse et la fusion de boucles. Les étudiants construisent un DSL d'algèbre linéaire minimal pour appliquer le patron.

  • Leçon 5 • CRTP et polymorphisme statique

    Couvre le Curiously Recurring Template Pattern pour les interfaces statiques. Élimine le surcoût d'appel virtuel tout en préservant le comportement polymorphe.

Chapitre 8Voir les détails

Architecture de projet C++ à grande échelle

  • Leçon 1 • Maîtrise de CMake et du système de construction

    Enseigne les cibles CMake modernes, les expressions génératrices et la gestion de paquets. Permet des constructions reproductibles et multiplateformes pour les grands projets.

  • Leçon 2 • Stabilité ABI et versioning

    Explique les causes de rupture d'ABI, l'idiome pimpl et les techniques de symboles versionnés. Les étudiants conçoivent des bibliothèques qui restent binairement compatibles entre les versions.

  • Leçon 3 • Analyse statique et qualité du code

    Couvre clang-tidy, cppcheck et l'intégration de sanitiseurs dans les pipelines CI. Applique des barrières de qualité cohérentes au sein de grandes équipes.

  • Leçon 4 • Système de modules C++20

    Couvre les unités de module, les partitions d'interface et les déclarations d'importation. Remplace la compilation basée sur les en-têtes pour des constructions plus rapides et des dépendances plus propres.

  • Leçon 5 • Stratégies de test pour les systèmes C++

    Introduit Google Test, Google Mock et les tests basés sur les propriétés avec RapidCheck. Les étudiants construisent une suite de tests en couches pour une bibliothèque C++ complexe.

Certification

Votre certificat valide de réussite

Ce cours est pour vous :

  • Développeur C++ de niveau intermédiaire : prêt à aller au-delà du travail quotidien sur les fonctionnalités pour plonger dans les systèmes.

  • Programmeur de moteur de jeu : a besoin de compétences bas niveau en performance et en concurrence pour les systèmes temps réel.

  • Ingénieur logiciel embarqué : souhaite des techniques C++ modernes adaptées aux environnements à ressources limitées.

  • Ingénieur infrastructure back-end : construit des services à haut débit où les coûts d'allocation comptent.

  • Diplômé en informatique : comble le fossé entre les connaissances académiques et les pratiques d'ingénierie de production.

  • Amateur C++ autodidacte : a construit des projets personnels et souhaite désormais une profondeur de niveau professionnel.

Ce que disent nos apprenants

Vos cours sont parfaits. J'ai acheté le forfait d'un an et j'ai enfin l'opportunité de suivre divers sujets qui m'intéressent sans avoir besoin de changer de plateforme... je vous remercie pour tout ce que vous faites, je vous ai déjà recommandés à d'autres personnes...
Giulio Carlo
Giulio CarloÉtudiant en Marketing Digital
J'aime la façon dont les leçons vont droit au but et comment je peux changer de chapitres et passer le contenu dont je n'ai pas besoin.
Mariana Ferres
Mariana FerresÉtudiante en Photographie
J'aime le contenu et la façon dont les vidéos sont présentées et transcrites, ce qui accélère le processus !
Luciana Alvarenga
Luciana AlvarengaÉtudiante en Design d'Ongles
La plateforme est rapide, simple à utiliser. La diversité du contenu et les vidéos complémentaires aident beaucoup dans l'apprentissage.
André Felipe
André FelipeÉtudiant en Ingénierie de Prompt

Formations principales

FAQ

Qui est Dedika ?

Le certificat est-il valable en Algérie ?

Les cours sont-ils gratuits ?

Quelle est la charge de travail du cours ?

Comment sont les cours ?

Comment fonctionnent les cours ?

Quelle est la durée des cours ?

Quel est le coût ou le prix des cours ?

Qu'est-ce qu'un cours EAD ou en ligne et comment ça marche ?

Cours PDF