Review: The C++ Programming Language by Bjarne Stroustrup

This book could be called “Everything You Ever Wanted to Ask About C++ and a Whole Bunch of Other Stuff You Had No Clue You Didn’t Know.” It really is the most comprehensive book I’ve seen on C++ and covers just about everything you will need to know (and maybe some more). That’s not surprising, as the book is some 1,300+ pages long. And, of course, it’s written by the creator of C++, so I would guess he knows a thing or two about the language.

The C++ Programming Language by Bjarne Stroustrup does cover all the major aspects of C++, but to name a few of the topics included: pointers and arrays, namespaces, classes, lambdas, overloading, copy and moving, templates (lots of templates), the STL, strings, regular expressions, concurrency, and the C standard library. It almost does a disservice to try to list all the topics, as it touches on almost all areas of the C++ language.  I found the code snippets to be useful and relevant, while still being short enough to be clear and understandable.

Keep in mind that this text has been updated to C++11 and the author does not bother teaching older standards. There are only a couple of instances when he mentions the difference but there is a chapter all the way at the end talking about some specific features that are different in each version of the language. This can be a good or bad thing depending on how you look at it. I mean, I think it was a good choice as the book would be twice as long and twice as confusing with constant clarification. But sometimes I was left wondering if a feature was new or if I just had never heard of it.

I’ll admit, I have actually not read earlier versions of this book, but I feel that Stroustrup has done a great job here. I would NOT recommend the book for beginners as I feel it is very technical and you might become afraid of C++ before even finishing the book. While the basic stuff about types and classes and all that are covered, the majority of the book is focused more on advanced features (templates, etc.). For intermediate to advanced programmers, this will be a great addition to the collection, and required reading to be an expert in C++. For novices I would recommend picking up C++ Primer or C++ Primer Plus (no relation).

One thing to note, this book is long. I think it may be the longest book I’ve ever read. Though I enjoyed it, there were points were I was doubting I would ever finish it. I would estimate it took around 2 months of daily reading to knock it out. If you wondered what I was doing since I haven’t updated the blog in a while, I was reading this. So before you embark on this adventure, make sure you’re fully prepared for what you are getting into. Recommended.