Les modules C++ de 42 (00 à 09) forment un parcours progressif pour quitter le C et apprendre le C++98 : classes, héritage, polymorphisme, exceptions, templates, conteneurs de la STL et algorithmes. Chaque module est un dépôt avec plusieurs exercices.
- Module 00 : espaces de noms, classes, fonctions membres, flux, listes d'initialisation, statique et const. Un répertoire téléphonique interactif et la complétion d'une classe de compte bancaire
- Module 01 : mémoire, pointeurs et références. Tas contre pile avec une horde de zombies, lecture et écriture de fichiers, pointeurs sur fonctions membres
- Module 02 : polymorphisme ad hoc, surcharge d'opérateurs et forme canonique orthodoxe, avec une classe de nombres à virgule fixe, jusqu'à un test d'appartenance à un triangle
- Module 03 : héritage, jusqu'à l'héritage multiple et virtuel (le problème du diamant)
- Module 04 : polymorphisme par sous-typage, copie profonde, classes abstraites et interfaces
- Module 05 : exceptions, avec des bureaucrates, des formulaires et une fabrique de formulaires
- Module 06 : conversions de types (casts), sérialisation et identification du type réel d'un objet
- Module 07 : templates de fonctions et de classes, avec un tableau générique qui vérifie ses bornes
- Module 08 : conteneurs et itérateurs de la STL, et une pile qui expose ses itérateurs
- Module 09 : la STL appliquée, avec un convertisseur de prix du Bitcoin, une calculatrice en notation polonaise inverse et le tri de Ford-Johnson comparé sur deux conteneurs
Les principes de la programmation orientée objet en C++ (forme canonique, polymorphisme, RAII), l'usage raisonné de la STL, et la rigueur d'un code qui compile sans avertissement avec les contraintes du standard C++98.