Accueil > Formations > Développement et Ingénierie de Logiciels > Langages & Écosystèmes Backend > C++ : les fondamentaux du langage et de la programmation orientée objet
Formation C++ : les fondamentaux du langage et de la programmation orientée objet
Apprenez à programmer en C++ selon les pratiques actuelles du langage, de la syntaxe à la programmation objet et générique.
Vue d'ensemble
- Pratique d'au moins un langage de programmation (variables, conditions, boucles, fonctions)
- Notions de programmation orientée objet souhaitées (les concepts objet sont rappelés en formation)
- La connaissance du langage C est un atout : avoir suivi la formation Langage C ou posséder un niveau équivalent
Objectifs pédagogiques
Programme détaillé
Introduction au C++ et environnement de développement
– Caractéristiques du langage : langage compilé et multi-paradigme (procédural, objet, générique), performance et contrôle fin des ressources
– Normalisation et évolution du C++ : un langage normalisé qui évolue par révisions successives de la norme
– Chaîne de compilation : préprocesseur, compilation et édition de liens, compilateurs courants (GCC, Clang, MSVC)
– Environnement de développement : IDE, options de compilation et avertissements du compilateur
– Débogueur : points d’arrêt, exécution pas à pas et inspection des variables
– Critères de qualité dans un développement logiciel : lisibilité, maintenabilité, portabilité et robustesse du code
– Installation et prise en main de l’environnement de développement
– Écriture, compilation et débogage pas à pas d’un premier programme
Syntaxe et bases du langage
– Types fondamentaux, variables et constantes : `const` et `constexpr` pour les valeurs connues à la compilation
– Initialisation uniforme et inférence de type avec `auto` : un code plus sûr et plus concis
– Opérateurs et structures de contrôle : conditions, boucles et boucle `for` sur intervalle pour parcourir une collection
– Fonctions : passage par valeur et par référence, valeurs par défaut, surcharge et fonctions `inline`
– Pointeurs et références : adresses, indirection, `nullptr` et choix entre pointeur et référence
– Entrées/sorties console : lecture et affichage avec `cin` et `cout`
– Programme de conversion de températures
– Programme de saisie et de calculs statistiques simples découpé en fonctions
Organisation du code
– Structures : regrouper des données hétérogènes, premier pas vers les classes
– Énumérations typées (`enum class`) : des constantes nommées sûres et sans collision
– Espaces de noms : organiser le code et éviter les conflits de noms
– Fichiers d’en-tête et d’implémentation : séparer déclaration et définition, gardes d’inclusion
– Préprocesseur et compilation séparée : directives, compilation conditionnelle et assemblage de plusieurs unités de compilation
– Construction d’un projet avec CMake : notions de base pour décrire et compiler un projet multi-fichiers
– Interopérabilité avec le C : utiliser des fonctions et des bibliothèques C dans un programme C++
– Découpage d’un programme existant en modules compilés séparément
– Écriture d’un fichier CMake minimal pour construire le projet
Classes et objets
– Concepts objet : abstraction, encapsulation et classification, vue d’ensemble des langages orientés objet
– Définition d’une classe : attributs, méthodes et niveaux de visibilité
– Constructeurs et destructeur : liste d’initialisation et cycle de vie d’un objet
– Copie d’objets : constructeur de copie, opérateur d’affectation, `= default` et `= delete`
– Membres particuliers : pointeur `this`, membres statiques, méthodes `const`, fonctions et classes amies
– Surcharge d’opérateurs : donner une syntaxe naturelle aux types métier (arithmétique, comparaison, flux)
– Relations entre classes : association et composition
– Création d’une classe compteur avec constructeurs et méthodes `const`
– Développement d’une classe métier (date, fraction ou montant) avec opérateurs surchargés
Héritage et polymorphisme
– Dérivation : héritage public, membres protégés, construction et destruction des classes dérivées
– Méthodes virtuelles et polymorphisme dynamique : liaison dynamique, `override` et `final`
– Destructeur virtuel : détruire correctement un objet manipulé via sa classe de base
– Classes abstraites et méthodes virtuelles pures : définir des interfaces en C++
– Héritage multiple : usages, ambiguïtés et précautions d’emploi
– Hiérarchie de formes géométriques construite autour d’une interface abstraite
– Ajout d’une nouvelle classe à une hiérarchie existante sans modifier le code appelant
Gestion de la mémoire et des ressources
– Pile et tas : durée de vie des objets automatiques et dynamiques
– Allocation dynamique avec `new` et `delete` : fonctionnement et risques (fuites, double libération, pointeurs pendants)
– Idiome RAII : lier la durée de vie d’une ressource à celle d’un objet
– Pointeurs intelligents : `unique_ptr` pour la propriété exclusive, `shared_ptr` et `weak_ptr` pour la propriété partagée, `make_unique` et `make_shared`
– Sémantique de déplacement : valeurs temporaires (rvalues), `std::move`, constructeur et affectation par déplacement
– Règles de zéro, de trois et de cinq : décider quelles opérations spéciales écrire
– Remplacement des pointeurs bruts d’une petite application par des pointeurs intelligents
– Ajout du déplacement à une classe qui gère un tampon mémoire
Exceptions
– Principes de la gestion des erreurs : codes de retour ou exceptions, choisir selon le contexte
– Mécanisme des exceptions : `try`, `catch`, `throw` et propagation le long de la pile d’appels
– Hiérarchie des exceptions standard : `std::exception` et ses classes dérivées
– Classes d’exception applicatives : définir ses propres exceptions métier
– Exceptions et ressources : libération automatique grâce au RAII, spécificateur `noexcept`
– Lecture d’un fichier CSV avec traitement des erreurs sur place puis propagation
– Conception d’une petite hiérarchie d’exceptions métier
Programmation générique avec les templates
– Intérêt et limites des templates : écrire un code indépendant des types, savoir quand les utiliser
– Templates de fonctions : syntaxe, déduction des arguments et instanciation
– Templates de classes : concevoir des conteneurs et composants génériques
– Polymorphisme statique et polymorphisme dynamique : comparer templates et fonctions virtuelles
– Fonction générique de recherche du maximum dans une collection
– Développement d’une classe template de pile
Bibliothèque standard
– Organisation de la bibliothèque standard : en-têtes, espace de noms `std` et documentation de référence
– Chaînes de caractères : `std::string` et `std::string_view`
– Flux et fichiers : lecture et écriture de fichiers texte
– Conteneurs : `vector`, `list`, `map`, `set`, `unordered_map` et critères de choix selon l’usage
– Itérateurs : parcourir les conteneurs de manière uniforme
– Algorithmes standard : recherche, tri, transformation et comptage
– Expressions lambda : fonctions anonymes pour paramétrer les algorithmes
– Lecture d’un fichier texte dans un `vector`, filtrage et tri avec algorithmes et lambdas
– Comptage des occurrences de mots d’un texte avec une `map`
Évolutions du langage et bonnes pratiques
– Panorama des normes récentes : concepts, ranges, modules, coroutines et formatage de texte, ce qu’ils apportent
– C++ Core Guidelines : les règles d’écriture recommandées par la communauté C++
– Avertissements du compilateur : en faire un outil de qualité au quotidien
Prochaines sessions
du 16 nov. 2026 au 20 nov. 2026 • 5 jours
du 16 nov. 2026 au 20 nov. 2026 • 5 jours
du 16 nov. 2026 au 20 nov. 2026 • 5 jours
du 16 nov. 2026 au 20 nov. 2026 • 5 jours
du 28 déc. 2026 au 1 janv. 2027 • 5 jours
du 28 déc. 2026 au 1 janv. 2027 • 5 jours
du 28 déc. 2026 au 1 janv. 2027 • 5 jours
du 28 déc. 2026 au 1 janv. 2027 • 5 jours
du 28 déc. 2026 au 1 janv. 2027 • 5 jours
du 18 janv. 2027 au 22 janv. 2027 • 5 jours
du 18 janv. 2027 au 22 janv. 2027 • 5 jours
du 18 janv. 2027 au 22 janv. 2027 • 5 jours
du 18 janv. 2027 au 22 janv. 2027 • 5 jours
du 26 avr. 2027 au 30 avr. 2027 • 5 jours
du 26 avr. 2027 au 30 avr. 2027 • 5 jours
du 26 avr. 2027 au 30 avr. 2027 • 5 jours
du 26 avr. 2027 au 30 avr. 2027 • 5 jours
du 6 sept. 2027 au 10 sept. 2027 • 5 jours
du 6 sept. 2027 au 10 sept. 2027 • 5 jours
du 6 sept. 2027 au 10 sept. 2027 • 5 jours
du 6 sept. 2027 au 10 sept. 2027 • 5 jours
Ils nous font confiance
Cette année notre filière Langages & Écosystèmes Backend a accompagné plus de 292 entreprises dont :
Avis des participants
Très bonne formation, très instructif même après quelques années de Python dans les bras. Une très petite équipe de stagiaires qui facilite les échanges. Je redoutais le mode visio mais c'était finalement très bien adapté.
Anthony explique bien les concepts attendus et prend le temps de répondre aux questions et aux différents problèmes rencontrés. Le support présenté créé par lui-même est différent des slides habituelles que l'on rencontre et permet de mieux naviguer à travers les chapitres. Merci
Le formateur sait rendre vivante la formation et est très pédagogue. Je pense que tout le monde est parti avec un vrai plus. Le python un peu plus avancé est un peu trop condensé sur la fin mais la formation n'est pas réellement trop courte.…
Cyril est top formateur, très bonne maitrise de rust et formation de bon niveau.
Formation très bien organisée, très claire Alison explique très clairement et est très à l'écoute, avec toujours une approche pratique essentielle. je n'avais jamais fait de Python et j'ai pu coder finalement assez rapidement grâce à une progression bien articulée des exercices. Comme c'est très…
Votre formateur
Michel L.
Formateur Java & C++
Michel intervient sur des formations portant sur les langages et écosystèmes backend. Les sujets abordés incluent notamment Java et C++. Son activité de formation remonte à 1989, soit plus de 35 ans d’expérience.
Financement
Cette formation est éligible aux financements OPCO et FNE-Formation. Nos équipes vous accompagnent dans le montage de votre dossier.
Questions fréquentes
Combien de temps dure la formation C++ : les fondamentaux du langage et de la programmation orientée objet ?
Cette formation se déroule sur 5 jours.
Quels sont les prérequis pour suivre la formation C++ : les fondamentaux du langage et de la programmation orientée objet ?
- Pratique d'au moins un langage de programmation (variables, conditions, boucles, fonctions) - Notions de programmation orientée objet souhaitées (les concepts objet sont rappelés en formation) - La connaissance du langage C est un atout : avoir suivi la formation Langage C ou posséder un niveau équivalent
Quel est le prix de la formation C++ : les fondamentaux du langage et de la programmation orientée objet ?
En inter-entreprises, elle est à 3 000 € HT par participant ; en intra-entreprise, elle est à 8 250 € HT pour le groupe. Un tarif sur-mesure est également disponible sur devis.
La formation C++ : les fondamentaux du langage et de la programmation orientée objet délivre-t-elle une certification ?
Cette formation ne délivre pas de certification. Une attestation de fin de formation vous sera remise à l'issue de la session.
La formation C++ : les fondamentaux du langage et de la programmation orientée objet est-elle éligible à un financement OPCO ?
Oui, cette formation est éligible aux financements OPCO et FNE-Formation. Nos équipes vous accompagnent dans le montage de votre dossier.
Choisissez votre formation
Mon contact chez SPARKS est professionnel et très réactif. Les échanges sont simples, efficaces, et la collaboration se déroule dans d'excellentes conditions.
