Aperçu du cours
Objectif de formation : Maîtriser les concepts avancés du langage C++
Prérequis
- Expérience pratique de programmation C++
Objectifs pédagogiques
- 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
Public ciblé
- Développeurs
Programme de 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
-
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
-