Book Recommendations for C/C++
I am listing here the books which I found useful in developing my programming skills and thinking.
These recommendations are based on my personal preferences. Wherever possible I am adding Amazon.com links for book or link to Books page on Wikipedia or authors page on Wikipedia.
Learning Basics of C/C++
These books are good to learn the C++ syntax and start programming in C++
These books are good for learning to effectively use the advanced C++ features like exceptions, RTTI, Templates, STL (Standard Template Library).
The C++ Programming Language by Bjarne Stroustrup
Effective C++ by Scott Meyers
More Effective C++ by Scott Meyers
Effective STL by Scott Meyers
Design and Evolution of C++ by Bjarne Stroustrup
If you want to know the thinking behind the design and implementation of C++ features like virtual tables, RTTI, Exceptions, this is a must read.
Advanced Advanced C++
These books for learning the advanced design concepts and how implement them in C++
More C++ Gems compiled by Robert Martin articles by many authors
Advanced C++ Programming style and idioms by James Coplien
This was one of primary source for GoF Design Patterns book. The ideas/concepts presented in this book influenced my thinking about C++ class design and architecture. Check the James Coplien's wikipedia page here.
I realized the 'real' power of C++ templates after reading this book. He developed Loki template library as part of example code for the book. The Loki library contains template based implementations of common design patterns. Loki inspired the similar functionality now also present in Boost library.
Large-Scale C++ Software Design by John Lakos
If you are implementing or working on large scale C++ project, you must read this book. It talks about many practical aspects like module dependencies, impact of include files on 'compilation time' and how to reduce compilation time, etc. I don't have this book but I have read the Lakos article in 'More C++ Gems'. The article helped in designing the modules and reducing the compile time in two large C++ projects that I worked on. I developed few techniques inspired from the article.