Concepts et mécanismes fondamentaux de C++
- Présentation,
- Histoire et caractéristiques de C++,
- Objets et types,
- La classe C++ et ses nombreuses interprétations,
- Création, suppression et initialisation d’objets,
- Copie d’objets.
Les exceptions
- Mécanisme basique,
- Exceptions dans un constructeur,
- Listes d’exceptions levées,
- Organisation d’exceptions dans une hiérarchie de classes,
- Sécurité des exceptions (l’idiome de programmation “Resource Acquisition Is Initialization”).
Run Time Type Information (RTTI)
- Motivation (problématique du 'down cast', l’opérateur 'dynamic_cast'),
- La classe 'typeinfo' et l’opérateur 'typeid',
- Utiliser RTTI correctement,
- Les nouveaux opérateurs 'cast' en C++ (les cast 'static', 'reinterpret' et 'dynamic').
Héritage multiple en C++
- Héritage multiple régulier,
- Héritage multiple virtuel,
- Construction des classes de base virtuelles,
- Conversions en cas d’héritage multiple.
Les fonctions et les classes génériques (template)
- Fonctions template,
- Instantiation implicite de templates,
- Spécialisation,
- Fonctions template et suppression du pré-processeur C++,
- Classes template,
- Instantiation implicite de templates,
- Classes template et héritage de classes,
- Classes template et friends,
- Paramètres template et leurs conversions,
- Conversion de classes template (problématique de la contravariance),
- Problématique de l’instantiation de template,
- Forcer l’instantiation de templates,
- Spécialisation et spécialisation partielle de templates.
|
Les mécanismes divers
- Pointeur aux membres,
- Les opérateurs.* et ->*,
- Nouveaux mots clés,
- Diverses extensions ANSI / ISO.
Les espaces de nommage
- Motivation et principe,
- Les espaces de nommage ne sont pas des packages,
- Ouvertures des espaces de nommage,
- Recherche par nom avec espaces de nommage,
- Classes et espaces de nommage.
La bibliothèque d’exécution standard C++
- Compatibilité avec ANSI / ISO C,
- Organisation et philosophie de la STL,
- Le principe de Pure Abstraction.
Conteneurs et itérateurs
- Opérations communes et spécifiques,
- Complexité algorithmique des opérations sur les conteneurs.
Algorithmes
- Les objets fonctions et les fonctionnels,
- Les itérateurs revisités (l’insertion d’itérateurs).
Chaînes de caractères
- Encodage et traits de caractères,
- Opérations sur les chaînes de caractères,
- Les chaînes de caractères en tant que conteneurs,
- Les itérateurs sur les chaînes de caractères.
Input-Output streams
- Les opérations et les manipulateurs
- Les itérateurs sur les IO streams.
Allocation dans la STL
- Les classes d’allocation.
Quelques mots sur la numérique dans la STL
Travaux pratiques illustrant différents aspects avancés de C++ :
- smart pointers,
- classes avec opérations de copie optimisées,
- architectures et idiomes pour la factorisation de code lors de l’usage des classes template,
- exercices avec certaines classes et algorithmes de la STL,
- …
|