As usually, C++ needs good books and up-to-date learning resources. In this review, I’d like to present a book that should significantly enhance your knowledge of Modern C++, including C++17.

Let’s see what’s inside.

Disclaimer: I asked the author and got a print copy for the review.

The book



Professional C++ 4th Edition

The Author:

Marc Gregoire - software architect from Belgium, founder of the Belgian C++ Users Group (www.becpp.org), author of “Professional C++”, co-author of “C++ Standard Library Quick Reference“, Microsoft MVP.

Marc’s blog post describing the release: “Professional C++, 4th Edition” Released

The book is for software developers who’d like to advance from beginner/intermediate to professional C++ users.

Let’s see what’s inside.

The Structure

Part I: Introduction To Professional C++

Chapter 1: A Crash Course In C++ And The Standard Library Chapter 2: Working With Strings And String Views Chapter 3: Coding With Style



The first part will set the foundation for the essential C++ knowledge you should have to move forward with the book.

Part Ii: Professional C++ Software Design

Chapter 4: Designing Professional C++ Programs Chapter 5: Designing With Objects Chapter 6: Designing For Reuse



In this section of the book, you’ll learn the principles of the software design. SOLID, object-oriented programming, classes, reuse, inheritance. The author uses lot’s of examples to illustrate the concepts.

Part Iii: C++ Coding The Professional Way

Chapter 7: Memory Management Chapter 8: Gaining Proficiency With Classes And Objects Chapter 9: Mastering Classes And Objects Chapter 10: Discovering Inheritance Techniques Chapter 11: C++ Quirks, Oddities, And Incidentals Chapter 12: Writing Generic Code With Templates Chapter 13: Demystifying C++ I/O Chapter 14: Handling Errors Chapter 15: Overloading C++ Operators Chapter 16: Overview Of The C++ Standard Library Chapter 17: Understanding Containers And Iterators Chapter 18: Mastering Standard Library Algorithms Chapter 19: String Localization And Regular Expressions Chapter 20: Additional Library Utilities



This is the most “beefy” part :)

The range of topics is vast. To help you get the ideas, through many chapters, you’ll see that the author starts with one example/app and then evolves it in the further sections. For example, there’s Spreadsheet and BoardGame applications.

Part Iv: Mastering Advanced Features Of C++

Chapter 21: Customizing And Extending The Standard Library Chapter 22: Advanced Templates Chapter 23: Multithreaded Programming With C++



Advanced techniques like writing a custom algorithm that follows the rules of STL, writing a simple hash container, using advanced template techniques.

Part V: C++ Software Engineering

Chapter 24: Maximizing Software Engineering Methods Chapter 25: Writing Efficient C++ Chapter 26: Becoming Adept At Testing Chapter 27: Conquering Debugging Chapter 28: Incorporating Design Techniques And Frameworks Chapter 29: Applying Design Patterns Chapter 30: Developing Cross-Platform And Cross-language Applications



This part teaches the practical aspects of programming in C++. It’s a mix between optimising C++ code, testing and debugging and even writing some design patterns.

There’s an also a good chapter “Incorporating Design Techniques…” that goes through the list of useful C++ coding techniques.

Appendix: C++ Interviews - Handy set of rules and questions that might be useful in your next job interview.

plus other appendices…

My View

With its length - 1100+ pages, and a variety of chapters everyone can find something to learn. I like that I can pick some selected sections and read things that I’m interested in at a specific time.

I can also choose a separate path: and go chapter by chapter. There are example apps that span several sections which help a lot. Sticking to one idea helps as you can concentrate on some domain and still learn new C++ and design things.

One of such examples is the spreadsheet application: In one chapter there’s some introduction and some basic concepts. Then we add some design principles to improve the class hierarchies. Then there’s polymorphism added, and so on. In the end, you have some little, text-based application that you can experiment.

Of course, there are also other smaller examples that work only in selected chapter or section.

There are also chapters related to the design. So sometimes you might feel like reading “Code Complete” - of course in a compact form.

This book is also practical: so it means there is a lot of platform-specific information. Like about testing in Visual Studio, or using gprof. The book, of course, won’t teach you QT or how to write DLLs but will give you a good base for starting with third party APIs and other platforms.

This book covers the most recent C++, so you’ll see a lot of sections about C++17. To make it easier to see the recent changes, each C++17 section has a little icon next to the text. I found it very practical. Especially if you do a quick book scan and you’d like to learn the recent things.

Summary

Final mark: 4.5/5

Pros:

Mix and match of various topics so everyone can find something for himself

Modern C++!

Not only Core C++ but also general software related topics like testing, design, development cycles.

Good examples! Not just simple but often they come from real-life domains, like a spreadsheet, simple games, databases.

Practical Tips for GCC, Visual Studio

Handy little C++17 icons to mark sections and paragraphs that relate to the newest features.

Cons:

Some features are not described extensively, for example, new C++17 elements.

I worry that my print copy, with soft cover, will break… but on the other hand, it’s a bit lighter than hardcovers.

Overall I like the book. I think every beginner and intermediate C++ programmer will find something to learn.

Giveaway

The giveaway has ended! Thank you for participation! The winners were contacted and the books are on the way...

Together with the author of Professional C++, we have 2 print copies of the book for you! (2 print copies of Professional C++ 4th)

All you need to do is to subscribe to the mailing list and leave a comment:

Answer one or two of those questions:

What area do you use C++ in? Is it the gaming industry? Financial? Desktop app? Mobile apps? Large Scale? Telecom? Something else?

How do you learn C++? Mostly from books? Free tutorials/blogs? Videos? Other?