My favourite C++ books
July 8, 2006
I’ve been programming C++ for quite a few years now (6 to be exact) and have read a lot of books to augment my skills.
Following is a list of books which taught me the most. Yours might of course differ.
- C++ Primer : I’ve read the third edition, but there is already a fourth edition. It will introduce you to the basics of the C++ language.
- Thinking in C++ Vol 1 + Vol 2 : I’ve read the Internet editions available here. It covers the language very thorough.
- C++ annotated reference manual : The language explained by its inventor. Although I set this in the beginner list, don’t make it your first read.
- Effective C++: 50 Specific Ways to Improve Your Programs and Design
- More Effective C++: 35 New Ways to Improve Your Programs and Designs : Together with the first one, these books give you tons of practical advice on how to use the language. I used them to write our coding standard.
- C++ Templates: The Complete Guide : Most beginning C++ programmers get introduced to templates by the obligatory array sample. If you really want to know what templates are, read this book.
- The C++ Standard Library: A Tutorial and Reference : This book proves that there is more then some simple collections in the STL.
- Inside the C++ object model : Provides detailed insights into the inner workings of C++
- Imperfect C++ : Practical Solutions for Real-Life Programming : A more positive sounding title would have been “Managing and Extending the C++ language: Practical Solutions for Real-Life Programming”. It provides solutions for limitations of the language and for missing language constructs.
- C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond
- Modern C++ Design: Generic Programming and Design Patterns Applied : If, after reading The C++ Standard Library: A Tutorial and Reference, you thought you knew everything about templates, then read these last two books. They will make you feel very humble. Together they introduce you to some extremely powerful programming concepts possible with C++.