Made to Order Software Corporation Logo

Best C++ Books

Once in a while someone will ask me which book is best to start learning programming. The fact is that I do not know because I'm already an advanced programmer and it's rather difficult for me to get back to the basics (it feels like a waste of my time, sorry...)

That being said, at Made to Order Software, we've mainly been a C++ shop. We also do a lot of C, PHP, JavaScript and touch many other languages as required by the tasks we perform (bash, cmake, perl, C#, Java, etc.)

That being said, I wanted to underline some of the best C++ books available today. Especially, in the last few years (since 2011, really) C++ has evolved very quickly. It now includes features such as file handling, threadings, real smart pointers (i.e. not auto_ptr<>(), yuck!) and many great improvements to templates such as variable lists of arguments.

C++ in One Hour a Day

Cover of C++ in One Hour a DayAs I mentioned, I'm not really at that stage anymore and I don't really take the time to check out books to learn C++. I already know it. That being said, this is one I've heard some good about so I think it is well adapted if you are a beginner and want to learn to become a C++ master.

The author is big with Visual C++ (the Microsoft C++ development environment) so you may get a few entries that do not apply to Linux. Still certainly a very good read.

The newest edition includes information about C++14 and C++17.

Click the book covers to go to Amazon and review these books further. I'm an Amazon affiliate and may receive a commission as a result of a purchase. Thank you.

The C++ Templates (the complete guide)

C++ Templates, The Complete GuideSince boost C++, many very advanced and very useful templates were invented by C++ developers. Boost included shared pointers (invaluable!) but also various templates to help in metaprogramming. For example, it is now very easy to check whether a template type parameter is a signed integer.

All of these C++ Templates and more were added to C++11, C++14, and C++17. This gives us incredible tools to not only write more effectively, but also increase chances that our code will work as expected (at least, much of it I use to make sure things work as expected.)

This book gives you a very deep view in the new world on C++ templates. It has grown so much and so quickly, that I do think a book was necessary and now we have it.

One chapter which I particularly like is the one about SFINAE, Substitution Failure Is Not An Error. This particular C++ template functionality allows for testing all sorts of things at compile time and really optimize your code.

By the way, although in the old days C was faster, now that we have all of these super advanced features in C++, it is rare that someone would be able to write code that runs faster in C. Using templates and a large amount of inline code, C++ is capable of optimizing a very large number of calls to just a few lines of assembly code. This is really powerful.


Post new comment

The content of this field is kept private and will not be shown publicly.
This question is for testing whether you are a human visitor and to prevent automated spam submissions.