Menu Recherche Panier
(...)
Vous êtes ici : Accueil > Catalogue des formations > Formation Développement C++ avancé
Technique

Formation Développement C++ avancé

Approfondissez vos connaissances en programmation C++

De nombreux experts s’accordent à reconnaitre que la maitrise de C++ suppose une longue pratique et une forte implication dans des projets complexes. Les normes récentes(C++ 11/14/17) ont d’ailleurs sensiblement amélioré la puissance d’expression et les possibilités de conception qu’offre ce langage. La finalité de cette formation intensive est de raccourcir de façon significative la durée de cet apprentissage pour tirer parti des nouveautés du langage et ainsi développer des applications encore plus puissantes.
Objectifs de cette formation Développement C++ avancé
  • 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
Programme détaillé

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 (uint_8, uint64_t, ...)
  • 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 make_unique (C++14) et make_shared
  • 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
Les plus de cette formation Développement C++ avancé
  • Une pédagogie efficace : l'alternance d'exposés théoriques et de mises en application immédiates à travers de nombreux travaux pratiques.
  • Les retours d'expériences de consultants experts en programmation C++.
  • Cette formation est éligible à l'action collective Fafiec "Développer avec les langages .Net, Java et C++" (Réf : 28113).
Moyens pédagogiques
  • Répartition théorie/pratique : 40%/60%.
  • Cette formation se compose d’une alternance d’apports théoriques, de travaux pratiques s’articulant autour d’un cas fil rouge, de démonstrations, de phases d’échanges entre participants et de synthèses de la part du formateur.
  • Ressources pédagogiques : un guide d’animation, un ordinateur connecté à Internet par participant, un support de cours en français et un cahier d’ateliers.
  • Une attestation de fin de formation sera remise au stagiaire à l'issue de la formation.

Informations

  • Durée : 4 jours (28h)
  • Tarif : 2 360 € HT
  • Réf. : LA201
  • Option(s)
    • Repas Paris : 92 € HT
    • Repas province : 88 € HT


Dates des sessions
Session garantie Formation à distance Session accessible à distance Visio
Bon à savoir...






= une réponse possible
= plusieurs réponses possibles

Comment rendre une classe abstraite ?
A est la superclasse de B. Comment redéfinir la méthode f ?
Quel opérateur ne peut pas être redéfini ?
Comment créer une instance de la classe A sur la pile ?
Comment lever une exception ?
Comment afficher la variable n sur la console ?
Comment supprimer un objet A ?
Que signifie le spécificateur static associé à une méthode ?
Comment rendre une méthode abstraite ?
Comment rendre un objet immuable ?
Vous n'avez pas répondu à toutes les questions !
Vous avez % de bonnes réponses, vous pouvez donc suivre cette formation.
Vous avez % de bonnes réponses.
Nous vous invitons à contacter nos Conseillers Formation au 0825 07 6000 afin qu'ils vous orientent vers une formation plus adaptée à vos connaissances.