Livres de références
- Programming: Principles and Practice Using C++ par Bjarne Stroustrup. Ce livre (volumineux : plus de 1300 pages) est une introduction au langage C++ écrit par le créateur du langage lui-même. Il est accessible aux débutants en programmation. Il existe une traduction de ce livre en français (Pearson Education)
- The C++ programming language également par Bjarne Stroustrup. Ce livre du même auteur est moins introductif que le précédent et peut être considéré comme un livre de référence décrivant tous les aspects du langage C++ avec également l'utilisation de la bibliothèque standard.
- Apprendre le C++ par Claude Delannoy. Ce livre écrit en français s'adresse à des programmeurs ayant déjà utilisés d'autres langages pour aborder la plupart des caractéristiques du langage C++. Des comparaisons sont réalisées avec d'autres langages (tel que Java).
- Essential C++ par Stanley Lippman. Ce livre propose une approche pratique pour la programmation en C++ (avec des exemples concrets).
Références en ligne
- CPlusPlus : site contenant une documentation de la STL, des tutoriels et ressources utiles
- CPPReference : site avec une documentation de la STL en français
- GNU C++ Library : documentation pour l'implantation GNU de la STL
Cours
Cours de professeurs de l'UPEM :
- Cours de Dominique Revuz (datant de 2004)
- Cours de Sylvain Lombardy orienté sur la programmation générique (utilisation de templates)
- Cours de Stéphane Vialette
Bibliothèques logicielles
Certaines bibliothèques logicielles sont très utiles pour la réalisation de programme en C++. Nous en citons ici quelques unes qui nous paraissent les plus essentielles :
- Boost : Boost est un jeu de bibliothèques C++ qui propose de nombreuses classes C++ pour réaliser des tâches courantes. Elle fait généralement office d'antichambre à la bibliothèque standard C++ : les idées proposées par Boost y sont souvent reprises quelques années plus tard pour l'élaboration d'une nouvelle norme C++.
- Loki : Loki est une bibliothèque facilitant la mise en œuvre de certains designs patterns en C++ (factories, singletons, pointeurs intelligents, visiteurs...).
- Qt : Qt est une bibliothèque très complète permettant de réaliser des interfaces graphiques en C++ avec un support multi-plateformes. La description des agencements de composants peut être réalisée déclarativement dans des fichiers QML. Qt intègre aussi des classes pour la communication réseau, l'accès à des bases de données SQL et l'intégration de composants web (QWebEngineView). La communication entre composants est réalisée par un mécanisme de signaux/slots (design pattern observer). Les classes utilisant Qt doivent être transformées en classes C++ compilables par un préprocesseur spécifique (Meta Object Compiler) afin de supporter le mécanisme de signaux/slots et les fonctionnalités d'introspection. Qt présente l'avantage d'avoir été porté pour d'autres langages : Java, Python (PyQt)
- WxWidgets : WxWidgets est une bibliothèque Open-Source graphique s'inspirant de la bibliothèque graphique MFC de Microsoft (plus légère que Qt et sans nécessité de preprocessing sur le code-source).
- SOCI : cette bibliothèque permet de requêter des bases de données SQL telles que SQLite, PostgreSQL ou MySQL. Elle peut réaliser de l'ORM (Object Relational Mapping)
- Xerces-C++ : cette bibliothèque (sous licence Apache) propose un parser XML utilisant DOM (arbre XML) et SAX (callbacks)
- Boehm collector : il s'agit d'une implantation de ramasse-miettes (garbage collector pour les anglophones) qui permet une libération automatique de la mémoire qui n'est plus utilisée