Organisme de Formation aux technologies et métiers de L'informatique
c-plus-plus

Formation Développement C++ avancé

Approfondissez vos connaissances en programmation C++

Informations générales

LNG201
4 jours (28h)
2 650 €HT

Objectifs

Après ce cours, vous serez capable de :

  • Maîtriser les mécanismes avancés de C++ (héritage multiple / virtuel, programmation générique, méta-programmation, ...)
  • Appréhender et mettre en oeuvre les spécificités des normes C++11/14/17/20 telles que les lambda expressions, la programmation fonctionnelle ou la notion de move semantics
  • Savoir pratiquer l'approche TDD (Test Driven Development) en C++
  • Découvrir et maîtriser la programmation parallèle et synchronisée introduite par C++

Public

Ce cours s'adresse avant tout aux personnes suivantes :

  • Développeurs C++ Chargés de développement d'applications informatiques

Prérequis

Pour suivre ce cours, vous devez déjà posséder les connaissances suivantes :

  • Avoir suivi la formation "Les fondamentaux du développement C++" (LNG200) ou maîtriser le langage de programmation orientée objet C++

Programme de la formation

De nombreux experts s'accordent à reconnaitre que la maitrise de C++ suppose une longue pratique et une forte implication dans des projets complexes. Les normes récentes (C++ 11/14/17) ont d'ailleurs sensiblement amélioré la puissance d'expression et les possibilités de conception qu'offre ce langage. La finalité de cette formation intensive est de raccourcir de façon significative la durée de cet apprentissage pour tirer parti des nouveautés du langage et ainsi développer des applications encore plus puissantes.

Nouveautés fondamentales du Core Language

  • Le littéral nullptr et les types normalisés : uint_8, uint64_t, les littéraux et séparateurs
  • Inférence de types et de signatures avec auto
  • Variables templates : C++ 14)
  • Initialisation uniforme des variables, des tableaux et des conteneurs
  • Parcours unifié des collections avec La boucle "range based" for
  • Listes d'initialisation avec std::initializer_list
  • Littéraux personnalisés
  • Amélioration du contrôle de flux avec les Init-statements : C++17/20)
  • L'opérateur sizeof appliqué aux membres d'un objet ou d'une classe
  • Contrôle de l'alignement mémoire
  • L'opérateur decltype
  • Déconstruction avec les structured bindings : C++17)
  • Les spécificateurs de classe : override, default, delete, final
  • Constructeur délégué et constructeur hérité
  • Initialisation de membres
  • Abraham's Exception safety guarantees et la clause noexcept
  • Données inline et data members statiques
  • Métaprogrammation avec constexpr
  • Les spécificateurs consteval et constinit : C++20)
  • Les attributs : C++11/17/20)
  • L'opérateur de comparaison « Three Way » : C++20)
  • Paramètres nommés pour la construction des structures : C++20)
  • Améliorations apportées aux fonctions génériques et aux lambdas : C++17/20)

Nouveautés de la librairie standard

  • Les tableaux à taille fixe avec std ::array
  • La classe std ::string_view : C++ 17)
  • La classe std ::span : C++ 20)
  • Nouveautés de la classe std ::string : C++20)
  • Les classes std ::variant, std ::any et std::optional : C++17)
  • Les nouvelles collections associatives : unordered_map/set
  • Le conteneur tuple
  • Les nouveaux algorithmes ensemblistes
  • Gestion du temps, l'espace de nom chrono
  • Générateurs / distributions de nombre aléatoires
  • La classe std::function, la fonction mem_fn
  • Binding, placeholders et adaptateurs de références
  • La librairie ranges, les vues et les adaptateurs de vues : C++20)
  • Pipelining avec les nouveaux algorithmes sur vues : C++20)
  • Sorties formattées avec std ::format et les placeholders : C++20)
  • Constructeurs constexpr des conteneurs : C++20)

Move semantics

  • Copie versus transfert de propriété : déplacement
  • La fonction std::move
  • Move constructor et move assignment operator
  • Complétude étendue des classes
  • Impact sur la librairie standard
  • Signature reference qualifiers
  • Perfect forwarding avec std::forward
  • Références forward et collapsing
  • Copy elision et Guaranted RVO : C++17)

Gestion des ressources

  • L'idiome RAII : Resource Acquisition Is Initialization)?
  • Propriété et transfert de responsabilité avec la classe std::unique_ptr
  • Comptage de références avec la classe std::shared_ptr
  • Implémentation d'un custom deleter
  • Les fonctions std::make_unique et std::make_shared
  • La classe std::weak_ptr et le référencement circulaire

Utilisation avancée de la généricité

  • Typage multiple avec les mixins
  • Paramétrage et spécialisation des méthodes
  • Héritage / containment et généricité
  • Métaprogrammation
  • L'idiome CRTP Curiously Recursive Template Pattern
  • Typologie C++ et classes de traits
  • Assertions statiques avec static_assert
  • Extended friend declaration
  • Les variadic templates, pattern matching et héritage multiple
  • Constexpr_if : C++17)
  • Implémentation générique du pattern visitor avec std (visit C++)
  • Définition de contrats génériques avec les concepts : C++
  • Mise en oeuvre de contraintes avec requires : C++/li>
  • Concepts prédéfinis de la librairie standard : C++

Les modules C++

  • Unités d'interface et d'implémentation
  • Sous modules et partitions
  • Module linkage

Multithreading et concurrence

  • Démarrage et détachement d'un thread
  • La classe std::jthread C++
  • La classe std::call_once
  • L'espace de noms this_thread
  • Les futures, politique de démarrage : parallèle ou asynchrone
  • Partage de ressources et mécanismes de synchronisation : mutexes, latches, barriers et données atomiques : C++11/20)
  • Flux de sortie synchronisés : C++20
plus d'infos

Méthode pédagogique

Chaque participant travaille sur un poste informatique qui lui est dédié. Un support de cours lui est remis soit en début soit en fin de cours. La théorie est complétée par des cas pratiques ou exercices corrigés et discutés avec le formateur. Le formateur projette une présentation pour animer la formation et reste disponible pour répondre à toutes les questions.

Méthode d'évaluation

Tout au long de la formation, les exercices et mises en situation permettent de valider et contrôler les acquis du stagiaire. En fin de formation, le stagiaire complète un QCM d'auto-évaluation.

Suivre cette formation à distance

  • Un ordinateur avec webcam, micro, haut-parleur et un navigateur (de préférence Chrome ou Firefox). Un casque n'est pas nécessaire suivant l'environnement.
  • Une connexion Internet de type ADSL ou supérieure. Attention, une connexion Internet ne permettant pas, par exemple, de recevoir la télévision par Internet, ne sera pas suffisante, cela engendrera des déconnexions intempestives du stagiaire et dérangera toute la classe.
  • Privilégier une connexion filaire plutôt que le Wifi.
  • Avoir accès au poste depuis lequel vous suivrez le cours à distance au moins 2 jours avant la formation pour effectuer les tests de connexion préalables.
  • Votre numéro de téléphone portable (pour l'envoi du mot de passe d'accès aux supports de cours et pour une messagerie instantanée autre que celle intégrée à la classe virtuelle).
  • Selon la formation, une configuration spécifique de votre machine peut être attendue, merci de nous contacter.
  • Pour les formations incluant le passage d'une certification la dernière journée, un voucher vous est fourni pour passer l'examen en ligne.
  • Pour les formations logiciel (Adobe, Microsoft Office...), il est nécessaire d'avoir le logiciel installé sur votre machine, nous ne fournissons pas de licence ou de version test.
  • Horaires identiques au présentiel.

Mis à jour le 03/12/2025
Le contenu peut faire l'objet de légères adaptations selon les besoins et la progression des participants.