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++

  1. Spirit of C - by Moolish Cooper

    This is the book I used in learning 'C'.

  2. C++ Primer - by Stanley B. Lippman

  3. Thinking in C++ by Bruce Eckel

Advanced C++

These books are good for learning to effectively use the advanced C++ features like exceptions, RTTI, Templates, STL (Standard Template Library).

  1. The C++ Programming Language by Bjarne Stroustrup

  2. Effective C++ by Scott Meyers

  3. More Effective C++ by Scott Meyers

  4. Effective STL by Scott Meyers

  5. 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++

  1. More C++ Gems compiled by Robert Martin articles by many authors

  2. 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.

  3. Modern C++ Design by Andrei Alexandrescu

    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.

  4. 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.