Skip over navigation

The Lost continent of

You've found a bug on my site!

Abstraction is selective ignorance

Andrew Koenig

C++ Books

My Reviews and Recommendations

I've put together a list of books in the form of a complete course of C++ study, from absolute newbie to total guru (I'm still working through it myself...). It is the course I have set for myself, but without the wrong turns and wrong books along the way.

I have bought, read, and can heartily recommend all of the textbooks here.

(1) Learning C++

Accelerated C++

Accelerated C++ Koenig & Moo
I discovered this book very late in my studies, and it immediately shot to the top of my list. Compared to most introductory texts this is a fairly slim volume, but it one of the most amazingly dense texts I've ever read. In fact, it only starts as an introductory text... It contains a huge number of concepts and ideas per page, while still being readable.

Thinking in C++, volumes One and Two

Thinking in C++ Thinking in C++ Bruce Eckel, Chuck Allison
A long-time favourite, this is actually two books. The first, Volume One, is an introduction to C++, while Volume Two introduces more advanced concepts and language features. Both texts are available online. Bruce has very generously let anyone read, or even print, a copy of his book for free. I maintain an official mirror of the books (see below). He claims everyone wins — He gets a lot of attention, and a lot of free proof readers, and we get to read an excellent book for nothing, if we so wish... Go to my mirror of the books »

(2) Reference Books

Stuff to keep at your elbow at all times...

Once you have learnt the basics of C++, you will want to practise so as to consolidate your knowledge. Almost certainly you will spend many hours wondering 'Why the #$!@% doesn't this work!!!' — or at the very least, 'What was the syntax to do x again?'. You need to always have ready access to a couple of good reference books.

The C++ Programming Language

Accelerated C++ Bjarne Stroustrup
Bjarne invented the language, and his book remains the authoritative reference. It has been updated through a number of editions (currently at the third) as new features are added to the language and standard library.

It's a bit too advanced as a general introduction to the language, unless you are already an experienced programmer already, but it serves as a great reference.

The C++ Standard Library

Accelerated C++ Nicolai Josuttis
The Title really says it all. This book serves as an excellent reference to the Standard C++ Library, especially the parts historically taken from the STL.

While you could learn about the library from this book, volume two of Thinking in C++ provides a easier to digest overview.

(3) Further Study

Learn to code better and better...

Knowing how to program in C++ is a long, long way away from knowing how to program well. C++ supports an amazingly diverse variety of programming styles — which can actually prove to be a problem for the uninitiated.

A poor text book will teach you only the syntax of the language, and the various language features. This is all very well, but what you really need to know is when to use these various features (exceptions, RTTI, member templates, multiple inheritance, pure virtual classes, etc, etc...).

The following books are those I've found, and still find, useful in this regard. A book from the first section, Accelerated C++ also really deserves to be mentioned here...

Effective <Book T>...

Scott Meyers
This series of books by the venerable Scott Meyers are amongst of my favourites. They are fun to read, worth coming back to time and time again, and are extremely thought provoking.

Together, the three books present '135 Specific Ways to Improve Your Programs and Designs'.

What this means in practice is that Scott manages to relate a huge number of best practices, and what North Americans call Gotchas — things that sneak up and bite the unwary. Usually this is the sort of knowledge only learnt through years of experience.

I was lucky enough to be involved in doing a technical review of the latest edition of Effective C++ — if you look really hard you can find my name in the acknowedgements...

Effective C++, Scott Meyers
More Effective C++, Scott Meyers
Effective STL, Scott Meyers

Exceptional C++ and More Exceptional C++

Herb Sutter
Another text book series, from another major player in the C++ world, former editor-in-chief of the C++ Report, Herb Sutter.

These two books are a little more difficult than the ones in Meyers' series, but follow the same general sort of format, with similar goals — and results. Worth reading, you are bound to learn a few nifty tricks in the process.

Herb Sutter's Exceptional C++
Herb Sutter's More Exceptional C++