Formation en Développement: C++ - Expertise - Ascent Formation
Retour aux formations
Développement

C++ - Expertise

4 jour(s)28h

Description

Objectif de formation : Maîtriser les concepts avancés du langage 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 concerné

Développeurs

Prérequis

Expérience pratique de programmation C++

Déroulé du programme

1

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
2

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
3

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
4

Pointeurs & membres de classes

  • Syntaxe des pointeurs sur membres de classes
  • Déploiement
  • Travaux Pratiques : Manipulation de pointeurs
5

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
6

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
7

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
8

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
9

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
10

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
11

Idiomes

  • Traits
  • Policy
  • SFINAE
  • CRTP : pour le polymorphisme statique
  • Travaux Pratiques : Implémentation des différents idiomes rencontrés
12

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
13

Bibliothèque Boost

  • Introduction
  • static_assert
  • property_map
  • smart_ptr
  • tuple
  • any
  • variant
  • threads
  • interprocess
  • mpl
  • Travaux Pratiques : Mise en pratique de plusieurs templates
14

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++
15

Performances

  • Introduction
  • Présentation des Best Practices

Informations

Durée

4 jour(s)

28h

Tarif

2380 € HT

HT