C++ – Expertise

0 Enrolled
28 heures
  • 28 heures
  • 106
  • 0
  • no
2,380.00€

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

Instructeur

Avatar de l’utilisateur

bprigent

0.0
0 commentaire
0 Students
491 Courses
Main Content