
- Durée
- 5 jours
- Niveau
- Intermédiaire
- Modalités
- Présentiel / Distanciel
Description de la formation C++
Apparu au début des années 1980 pour apporter au langage C la dimension objet tout en capitalisant sur ses performances, le langage C++ est encore aujourd’hui toujours très présent dans les projets de développement. Il a apporté de nombreuses améliorations au langage C comme le typage fort, la surcharge de fonctions, la programmation générique, les pointeurs intelligents et une très riche librairie STL (Standard Template Library) qui lui ont permis de maintenir sa popularité.
Cette formation vous permettra de mettre en œuvre tous ces éléments en respectant la syntaxe, y compris celle de l’importante norme C++ 11, afin de livrer un code portable et sécurisé. Vous apprendrez à produire un code de qualité qui respecte les bonnes pratiques professionnelles en matière de conception et de développement objet.

Objectifs pédagogiques
Objectifs pédagogiques :
À l'issue de cette formation C++, vous aurez acquis les connaissances et compétences nécessaires pour :
- Comprendre la syntaxe et les concepts fondamentaux du C++
- Maîtriser les ajouts majeurs des normes C++
- Appliquer les principes de la Conception Orientée Objet
- Écrire des programmes simples en appliquant les bonnes pratiques de développement
- Utiliser les structures de contrôle et les types de données en C++
- Manipuler les fichiers et la mémoire de manière basique
Objectifs opérationnels
Objectif opérationnel :
Savoir mettre en œuvre les principes fondamentaux de la conception orientée objet et concevoir des applications en C++.
Programme
Contenu du cours, module par module
11 modules
- Les paradigmes de la P.O.O.
- La classification
- Contrôler l’accès aux données (encapsulation)
- L'héritage, la dérivation
- Fournir les informations essentielles (abstraction)
Travaux pratiques
Présenter le modèle objet que l’on va utiliser en fil rouge dans la formation (il ne sera pas unique afin de bien comprendre les manipulations communes à toutes les classes et ce qui est spécifique à chacune)
Description : Quiz qui valide dans un premier temps que tout le monde dispose du vocabulaire objet, que ce vocabulaire est commun à tous participants et au formateur, mais aussi que tout le monde a compris en profondeur chaque concept.
- Les types de données, les variables, les constantes, L’initialisation uniforme, Les opérateurs
- Les structures de contrôles
- Tableaux et chaînes de caractères
- Les fonctions, paramètres par défaut et la surcharge
- Les expressions lambdas, Les fonctions "inline"
- Les pointeurs bruts, référence lvalue
- Les structures et les types personnalisés, les énumérations
- Les espaces de noms et l’organisation du code
- Les compilations séparée et conditionnelle
Travaux pratiques
Description : Réalisation du programme celcius.cpp qui demande la saisie au clavier d'une température en degrés Fahrenheit, puis calcule et affiche la température correspondante en degrés Celsius en interdisant les valeurs hors plage.
Création d’une expression lambda pour détection d’un palindrome.
- Définition d'une classe, Les qualificateurs "public" et "private"
- Instanciation d’une classe
- La surcharge de méthodes
- Constructeurs par défaut, surchargés, de copie
- Surcharge de l'opérateur d'affectation
- Le destructeur
- Le mot-clé this, les membres static
- Les méthodes const, inline
- Les fonctions amies
- Surcharges d’opérateurs
- L’allocation dynamique de mémoire
- Les mots-clés default et delete
- Le mot-clé final sur classes ou méthodes
Travaux pratiques
Description : Création d’une classe « counter » permettant de créer un objet qui génère une séquence de nombres (incrémentation, valeur actuelle, affichage, etc.)
Surcharges du constructeur en y passant un nombre ou un objet (pour s’initialiser sur cet objet).
- Introduction aux diagrammes de classes UML2
- Les associations entre classes : l’association directe, l'agrégation, la composition
- Traduction en C++ d’une association, d’une composition
- Importance de la liste d’initialisation dans les constructeurs
- L'héritage public simple
- Ordre d'exécution des constructeurs et destructeurs
- Les règles de conversion
- Le qualificateur d'accès protected
- L'héritage multiple répété et ses difficultés de mise en œuvre
- Manipulation d’objets dérivés
Travaux pratiques
Savoir spécialiser une classe existante par héritage pour ne pas tout réécrire en maîtrisant l’impact hiérarchique dans la syntaxe (classe mère et descendance.)
Description : Mise en œuvre d'une relation d’association puis de composition entre deux classes. Construction d'une hiérarchie de classes à trois niveaux. Manipulation d'objets de ces classes. Mise en œuvre d'un héritage multiple répété
- Les méthodes virtuelles
- Intérêt du polymorphisme
- Mise en œuvre du polymorphisme
- Les classes abstraites et les méthodes virtuelles pures
- Les destructeurs virtuels
Travaux pratiques
Description : Mise en œuvre du polymorphisme dans le Design Pattern Factory Method : obtenir un objet d’une sous-classe dans une hiérarchie de classes avec héritage multiple comportant une classe abstraite pure.
- Principe du traitement des anomalies
- Utilisation des mot-clés try, catch et throw
- Traiter les exceptions sur place
- Propager les exceptions
- Lever une exception
- Créer ses propres classes d’exception
- Le mot-clé noexcept
Travaux pratiques
Description : Calcul de la somme des soldes mensuels d’un compte bancaire par lecture d’un fichier CSV avec mise en œuvre d’un traitement sur place d’exceptions puis en propageant les exceptions à la fonction appelante.
- Principe des templates, objectifs, avantages et limites
- Déclaration de paramètres template
- Templates de fonctions : syntaxe et surcharge
- Templates de classes
- Templates de méthodes
- Instanciation des templates de fonctions, des templates de classes
- Instanciation implicite vs instanciation explicite
- Spécialisation complète ou partielle d’un template
Travaux pratiques
Description : Création d'un template de fonction (fonction rendant le « plus petit » de deux objets passés en argument indépendamment de leur type). Création d'un template de classe (tableau redimensionnable automatiquement).
- Principe de la gestion RAII des ressources
- Danger des pointeurs bruts
- Intérêt des smart pointers
- Mise en œuvre de unique_ptr, shared_ptr, weak_ptr
- Utilisation de make_unique et make_shared
- Mise en œuvre d’un destructeur personnalisé
Travaux pratiques
Description : Mise en œuvre, dans une petite application, de la technique RAII par remplacement des pointeurs bruts par des pointeurs intelligents
- Présentation des IDE courants
- Options de compilation
- Cross-compilateurs
- Génération d’un exécutable, fichiers objets
- Utilisation des fonctionnalités de debug
- Commande make et cmake sous Linux
- Utilisation de git
Travaux pratiques
Savoir packager une application C++.
Description : Recherche de bugs dans une application et correction.
Mise en œuvre d’une chaîne de build automatisée.
- Composants clés, documentation, philosophie d’usage
- Les conteneurs et initializer_list
- Les itérateurs et algorithmes STL
- Gestion des entrées-sorties, (flux standard, manipulateurs, espace de nom chrono)
Travaux pratiques
Description : Lecture d’un fichier texte ligne par ligne, création des objets représentés par les chaînes de caractères, mise en œuvre d’un vector pour y stocker les objets et parcours à l’aide d’un itérateur pour supprimer certains objets, tri du vector à l’aide d’un algorithme de tri et d’un foncteur
- Le mot-clé constexpr
- Principe des références rvalue, rôle de std ::move
- Intérêt de la move semantics
- Les concepts et contraintes
- Les modules et partitions
- Les coroutines
- Le nouvel opérateur de comparaison
- Le mot-clé consteval
Travaux pratiques
Description : Ajout, dans une classe, d’un constructeur et d’un opérateur d’affectation par déplacement utilisation d’une expression lambda dans un algorithme de tri.
Travaux pratiques
Les travaux pratiques sont conçus dans une approche pédagogique qui permet de valider les acquis en plus d’exemples concrets de mise en œuvre en C++. Les concepts importants sont donc toujours au cœur du TP et la trame de ces derniers fait office à la fois de synthèse réutilisable pour vos propres développements futurs mais aussi de révision lorsque vous vous replongerez dedans. Il s'agit d'une formation avec une grande part consacrée aux travaux dirigés (plus de 50% du cours).
Programme mis à jour le 10/12/2025
Public concerné
Ce cours s’adresse aux prioritairement à un public technique comme les développeurs qui souhaitent développer ou maintenir des applications ou modules écrits en C++.
Elle intéressera plus particulièrement les développeurs dans les domaines cibles du C++ comme l’embarqué, le système, les IoT, la communication, etc. mais ne saurait s’y réduire tant les domaines d’application du C++ sont vastes et ses performances attractives pour tous les développeurs.

Prérequis
Les participants à cette formation possèdent la maîtrise d’au moins un langage de programmation (C, PHP, Java, C#, Python, etc.) car la formation ne prévoit pas de revenir sur les bases (variables, test, boucle, appel fonction, etc.).
Il faut connaître également les principes de la programmation objet (classe, propriétés, méthodes, instance, héritage) car vous les appliquerez dans le cadre du C++.
J’évalue mes connaissances pour vérifier que je dispose des prérequis nécessaires pour profiter pleinement de cette formation en faisant le test de prérequis.
Faire le testFinancement
Cette formation peut être prise en charge par votre entreprise, seule ou avec l’appui de son opérateur de compétences. Nous fournissons le devis et les pièces attendues par l’OPCO.
4,7/5
22 avis
« Mon avis sur le contenu du stage : "Bien que le format de 35h l'exige. Le contenu est très dense et est devenu indigeste (pour ma part) après les premiers jours." Mon avis sur le formateur : "Animateur pédagogue, patient, bien veillant et qui connait son sujet. " Ce que j'ai le plus apprécié : "Des outils fonctionnels, simples à prendre en main et à utiliser. Environnement préparé à l'avance. Service technique réactif" »
DUPUY WesleyALKALEE « Mon avis sur le formateur : "Très gentil, à l'écoute, on sent l'envie de partager ses connaissances" Ce que j'ai le plus apprécié : "Equilibre entre partie cours et travaux pratique, mise en pratique directement après la prise de connaissance du cours. Petits exercices projet en autonomie." Ce que j'ai le moins apprécié : "Cours très condensé, passage très rapide sur chaque concept." »
VLPROTECTIC « Mon avis sur le contenu du stage : "Le temps pour effectuer les TPs étaient trop long, peut-être rajouter des exercices bonus pour ceux qui attendent les autres. " Ce que j'ai le moins apprécié : "Je pense qu'avoir les TPs déjà mise en place pour commencer l'exercice, il y a beaucoup de perte de temps en créant et en copiant les fichiers d'un exercice à l'autre." »
MA
Les avis figurant ci-dessus sont issus des fiches d’évaluation que remplissent les participants à la fin de la formation. Ils sont ensuite publiés automatiquement si les personnes ont explicitement accepté que nous les diffusions.
Formations liées
- C++ Programmation Avancée ExpertRéf. DCPA4 joursAvancéProchaine session : 14 déc.2 490 €
- C++ ApprofondissementRéf. DCAP2 joursIntermédiaireProchaine session : 17 déc.1 590 €
- C++ Certified Associate Programmer (Certifiant)Réf. DCCA3 joursIntermédiaireProchaine session : 21 déc.
- CUDA - InitiationRéf. CUDA1 jourFondamental