Formation Perfectionnement en langage C++
dates des sessions
lieu
Toutes les dates
Objectifs
- 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 techniques de la nouvelle norme C++11/14 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++11
Public
- Développeurs C++
- Chargés de développement d’applications informatiques
Prérequis
Avoir suivi la formation "Les fondamentaux du développement C++"
Programme
Nouveautés fondamentales de la norme C++11/14
- nullptr_t et le littéral nullptr
- Les nouveaux types, littéraux et séparateurs
- Variables templates
- Initialisation uniforme
- Initialisation de tableaux et collections
- Parcours unifié des tableaux et conteneurs
- Listes d’initialisation avec initializer_listT>
- La boucle "range based" for
- Énumérations fortement typées
- Types normalisés et variantes (uint8, uint64t, …)
- Contrôle de l’alignement mémoire
- Inférence de types et de signatures avec auto
- C++14 et déduction étendue
- Les nouveaux spécificateurs de classe (override, default, delete, final)
- Constructeur délégué
- Constructeur hérité
- Alias et using
- Expressions constantes avec constexpr
- Gestion du temps, l’espace de nom chrono
Move semantics
- Copie versus déplacement
- Value et RValue reference
- La fonction move
- Move constructor et move assignement operator
- Héritage et move constructor / op=
- STL C++11 et swap / move
- Signature reference qualifiers
- Mauvaises pratiques
Gestion des ressources
- Resource Acquisition Is Initialization (RAII)
- L’opérateur -> avec ou sans généricité
- Propriété et transfert de responsabilité
- La classe unique_ptr
- Unique_ptr et tableaux dynamiques
- Comptage de références avec la classe shared_ptr
- Custom deleter
- Les fonctions makeunique (C++14) et makeshared
- La classe weak_ptr et le référencement circulaire
Gestion avancée des exceptions
- Principes
- Dynamique
- Traiter une exception
- Concevoir et hiérarchiser les exceptions
- Traitement par défaut
- Les exceptions prédéfinies
- Abraham’s Exception safety guarantees
- La clause C++11 noexcept
Héritage avancé
- Surcharge et ambiguïtés
- Héritage public et redéfinition privée
- Héritage privé et protégé
- Héritage multiple
- Héritage en diamant
- Héritage virtuel et dominance
Programmation fonctionnelle avec C++ 11/14
- Problématique de l’abonnement
- Les classe function et mem_fn
- Binding, placeholders
- Adaptateurs de références
- Les lambda-expression
Utilisation avancée de la généricité
- Typage multiple
- Inférence des retours avec decltype
- Paramétrage / spécialisation des méthodes
- Perfect forwarding avec std::forward
- Héritage / containment et généricité
- Méta-programmation
- 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
- SFINAE Substitution Failure Is Not An Error
Nouveautés C++11 de la librairie standard
- Les nouveaux itérateurs cbegin
- Les tableaux à taille fixe avec std ::array
- Les nouvelles collections associatives : unordered_map/set
- Singly-Linked Lists
- Le conteneur tuple
- Adaptateurs d’itérateurs, stream itérateurs
- Les nouveaux algorithmes ensemblistes
Multithreading
- Principes
- Démarrage et détachement d’un thread
- La classe std ::call_once
- L’espace de noms this_thread
- Futures / promises et packaged_task
- Programmation asynchrone avec async
- Politiques de démarrage
- Comparaison thread versus future
- Partage de ressources et mécanismes de synchronisation
- Mutexes et données atomiques
- Unique-lock et lock_guard
Approche Test Driven Design (TDD) en C++ avec GoogleTest
- Concepts
- Assertions et tests élémentaires
- Tests multiples : suites de tests et Test Cases
- Préparation et mutualisation des tests avec les Test fixtures
Moyens et Méthodes Pédagogiques
- La formation est constituée d’apports théoriques, d’exercices pratiques et de réflexions
- Un poste par stagiaire
- Formateur Expert
- Remise d’une documentation pédagogique papier ou numérique pendant le stage
Validation des acquis
- Auto évaluation des acquis par le stagiaire via un questionnaire en fin de formation
- Attestation de fin de stage remise avec la facture