C++ - Expertise

Formation créée le 10/01/2023. Dernière mise à jour le 20/03/2023.
Version du programme : 1

Type de formation

Formation à distance

Durée de formation

28 heures (4 jours)

C++ - Expertise


Objectif de formation : Maîtriser les concepts avancés du langage C++

Objectifs de la formation

  • Utiliser des bonnes pratiques concernant l'usage des classes
  • Connaître le besoin et les pièges des conversions
  • Connaître l’intérêt du Run-time type information
  • Comprendre l’utilisation des pointeurs
  • Programmer les exceptions de manière efficace
  • Comprendre comment manipuler les templates & les design patterns
  • Gérer un objet qui se comporte comme une fonction
  • Déployer la puissance de la bibliothèque STL
  • Concevoir des idiomes
  • Appréhender les possibilités de la bibliothèque Boost
  • Comprendre les principales nouveautés du C++11

Profil des bénéficiaires

Pour qui
  • Développeurs
Prérequis
  • Expérience pratique de programmation C++

Contenu de la formation

Classes en C++
  • Constructeurs & gestion de la mémoire
  • Forme canonique d'une classe
  • Rôle du constructeur de copie
  • Surcharge de l'opérateur d’affectation
  • Intérêt d'un destructeur virtuel
  • Pièges et erreurs
  • Travaux Pratiques : Exécution d'exemples pédagogiques illustrant les concepts présentés
Conversions en C++
  • Présentation des conversions, syntaxe
  • Const_cast
  • Static_cast
  • Reinterpret_cast
  • Dynamic_cast
  • Travaux Pratiques : Détermination du type de cast et déploiement dans différentes situations
Identification de type à l'exécution
  • Concepts clés et cas d'usage
  • Usage du dynamic_cast : réalisation d'un downcast dans une hiérarchie de classes
  • Opérateur typeid & classe type_info
  • Travaux Pratiques : Déploiement de RTTI pour effectuer un affichage spécifique d'un objet faisant partie d'une hiéarchie de classes
Pointeurs & membres de classes
  • Syntaxe des pointeurs sur membres de classes
  • Déploiement
  • Travaux Pratiques : Manipulation de pointeurs
Smart pointers
  • Danger des pointeurs nus
  • Concept de la gestion de ressources
  • Rôles des smart pointers
  • Raisons de l'obsolescence de auto_ptr
  • Implémentation de unique_ptr, shared_ptr et weak_ptr
  • Travaux Pratiques : Utilisation et déploiement des pointeurs intelligents
Traitement des exceptions
  • Concept d'exceptions
  • Classes d'exceptions
  • Lever une exception
  • Gestionnaires d'exceptions
  • Liste d'exceptions
  • Hiérarchies d'exceptions
  • Classes d'exceptions standards
  • Constructeurs & exceptions
  • Exceptions & gestion des ressources
  • Best practices
  • Travaux Pratiques : implémentation d'une gestion d'exceptions dans une application effectuant des entrées-sorties
Templates
  • Introduction
  • Forces & faiblesses
  • Syntaxe des templates de fonctions
  • Syntaxe des templates de classes
  • Syntaxe des templates de méthodes
  • Instanciation des templates de fonctions
  • Instanciation des templates de classes
  • Spécialisation partielle ou totale des templates
  • Travaux Pratiques : Implémentation d'une fonction template, d'une classe template puis d'une classe template template
Premiers pas avec les Design Patterns
  • Introduction des patterns du GoF
  • Patterns de création
  • Patterns de structure
  • Patterns de comportement
  • Travaux Pratiques : Manipulation des différents patterns
Foncteurs
  • Introduction
  • Rôles des foncteurs
  • Foncteurs prédéfinis dans la bibliothèque standard
  • Usage d'adaptateurs de fonctions unaires & binaires
  • Travaux Pratiques : Implémentation d'un foncteur dans un algorithme
Bibliothèque STL
  • Premiers pas avec la Standard Template Library
  • Conteneurs
  • Allocateurs
  • Itérateurs
  • Algorithmes
  • Entrées-sorties
  • Travaux Pratiques : Déploiement de quelques conteneurs, d'algorithmes & template d'entrées-sorties
Idiomes
  • Traits
  • Policy
  • SFINAE
  • CRTP : pour le polymorphisme statique
  • Travaux Pratiques : Implémentation des différents idiomes rencontrés
Méta-programmation
  • Comment exécuter à la compilation
  • Forces & faiblesses
  • Optimisations
  • Travaux Pratiques : Implémentation de la méta-programmation dans des cas d'études
Bibliothèque Boost
  • Introduction
  • static_assert
  • property_map
  • smart_ptr
  • tuple
  • any
  • variant
  • threads
  • interprocess
  • mpl
  • Travaux Pratiques : Mise en pratique de plusieurs templates
Nouveautés de C++11
  • Mot-clés auto, decltype & constexpr
  • Définition des rvalue références
  • Application des rvalue références : déplacement & transfert parfait
  • Utilisation de std::move & std::forward
  • Les fonctions lambda
  • Les variadic templates
  • Initialisation des données membres non-statiques
  • Alias de template
  • Constructeurs délégués
  • Déclarations étendues de l’amitié
  • Surcharge explicite de la virtualité
  • Constante nullptr
  • « Range-based » for
  • Opérateurs de conversion explicites
  • Tour d'horizon des types POD (Plain Old Data) revisités
  • Types locaux et non nommés comme arguments template
  • Énumérations à typage fort
  • Fonctions par défaut et supprimées
  • Espaces de nom inline
  • Propagation des exceptions
  • Travaux Pratiques : Mise en pratiques des nouveaux outils de C++
Performances
  • Introduction
  • Présentation des Best Practices

Équipe pédagogique

Professionnel expert technique et pédagogique.

Suivi de l'exécution et évaluation des résultats

  • Émargement numérique
  • Mises en situation
  • Formulaires d’évaluation de la formation
  • Certificat de réalisation de l’action de formation

Ressources techniques et pédagogiques

  • Espace intranet de formation
  • Documents supports de formation projetés
  • Exposés théoriques
  • Étude de cas concrets
  • Mise à disposition en ligne de documents supports à la suite de la formation

Qualité et satisfaction

Taux de satisfaction des apprenants, nombre d'apprenants, taux et causes des abandons, taux de retour des enquêtes, taux d'interruption en cours de prestation...