Programmation efficace et avancée en C++
Référence : PREFC
Durée : 5 jours (35 heures)
On considère qu'il faut entre 3 et 5 ans de pratique pour devenir un programmeur C++ expert. Si vous êtes un développeur pratiquant le C++ depuis quelques mois et que vous cherchez à accélérer ce lent processus d'apprentissage, ce cours est pour vous.
À l'issue de cette formation vous pourrez prétendre être un programmeur C++ expert, capable de bien utiliser la bibliothèque standard (STL) et sachant utiliser des constructions syntaxiques pointues. Vous saurez également tirer profit de la programmation générique, de la programmation dynamique (RTTI) et utiliser l'héritage multiple à bon escient. Vous découvrirez également les dernières évolutions du langage C++ avec l'intégration d'éléments de la bibliothèque Boost.
Travaux pratiques :
De nombreux exercices réalistes ont été conçus pour vous permettre de consolider les nouvelles techniques acquises mais aussi d'élargir leur champ d'utilisation. La syntaxe C++ étant parfois obscure et difficile à assimiler, ces exercices permettent de faire fausse route une première fois en toute sécurité afin de pouvoir, par la suite, éviter les pièges des projets réels.
Vous allez apprendre à :
- Élaborer des fonctions et des classes templates
- Mettre en pratique la gestion des exceptions
- Utiliser des opérateurs et des pointeurs pour implémenter l'indirection
- Découvrir et réutiliser les nouveaux conteneurs de la bibliothèque Boost
- Vous exercer à la programmation générique
- Étendre votre utilisation des flux d'entrée / sortie (E/S)
- Débattre de l'usage des requêtes de types à l'exécution (RTTI)
- Maîtriser les aspects avancés de l'héritage (multiple - privé)
- Gérer l'allocation et la libération des ressources
- Mettre en oeuvre des stratégies spécifiques au C++ pour améliorer les performances
Méthode pédagogique :
60% de travaux pratiques
Audience :
Développeurs C++ souhaitant approfondir leurs connaissances dans ce langage
Pré-requis :
- 3 à 6 mois d'expérience de la programmation avec C++
Programme :
- Les espaces de noms
- Pourquoi utiliser les espaces de noms ?
- Déclarations et définitions combinées
- Définitions discontinues
- Les bonnes pratiques
- Les opérateurs
- Opérateurs binaires et unaires
- Opérateurs et réutilisation
- Les foncteurs
- Les opérateurs pointeur et type
- Programmation dynamique avec RTTI
- Utilisation de typeid() et type_info
- static_cast(), reinterpret_cast(), const_cast() et dynamic_cast()
- Les templates
- Le pré-processeur et les macros
- Syntaxe
- Fonction template
- Classe template
- Utilisation des templates
- La bibliothèque STL
- Les conteneurs
- Les itérateurs
- Les algorithmes
- Les collections de la librairie Boost
- La gestion de la mémoire avec Boost
- Gérer la mémoire dynamique
- Encapsuler un pointeur
- Constructeurs et exceptions
- Gérer la propriété de la mémoire
- Initialiser et transmettre des auto_ptr
- Pointeurs sur fonctions membres
- Comparaison avec les pointeurs sur fonction en C
- Syntaxe
- Utilisation de typedef
- Les entrées / sorties
- Cout, cin et cerr
- Utilisation des fichiers
- Les opérateurs de Streaming
- La programmation générique
- Révision des templates
- Réification de fonctions
- Les algorithmes de la STL
- Gestion efficace des exceptions
- Lever et relancer des exceptions
- Capturer les exceptions
- Hiérarchiser les exceptions
- Bonnes pratiques
- Utilisation avancée de l'héritage
- Héritage privé, protégé et contrôle d'accès
- Héritage multiple
- IM et classes de base répliquées
- Ambiguïté potentielle et résolution par la clause using
- Héritage virtuel et règles de dominance
- Casting et héritage virtuel
- Performance
- Gérer efficacement les dépendances de compilation
- Du bon usage de l'Inlining
- Profiling, anticipation et mise en cache
- Recyclage des objets et mise en Pool
- Écriture d'allocateurs de mémoire