Expert C++ Programming

Leveraging the power of modern C++ to build scalable modular applications

Book Description

C++ has come a long way and has now been adopted in several contexts. Its key strengths are its software infrastructure and resource-constrained applications. The C++ 17 release will change the way developers write code, and this course will help you master your developing skills with C++. With real-world, practical examples explaining each concept, the course is divided into three modules where will begin by introducing you to the latest features in C++ 17. It encourages clean code practices in C++ in general and demonstrates the GUI app-development options in C++. You'll get tips on avoiding memory leaks using smart-pointers.

In the next module, you'll see how multi-threaded programming can help you achieve concurrency in your applications. We start with a brief introduction to the fundamentals of multithreading and concurrency concepts. We then take an in-depth look at how these concepts work at the hardware-level as well as how both operating systems and frameworks use these low-level functions.

You will learn about the native multithreading and concurrency support available in C++ since the 2011 revision, synchronization and communication between threads, debugging concurrent C++ applications, and the best programming practices in C++.

Moving on, you'll get an in-depth understanding of the C++ Standard Template Library. Where we show implementation-specific, problem-solution approach that will help you quickly overcome hurdles. You will learn the core STL concepts, such as containers, algorithms, utility classes, lambda expressions, iterators, and more while working on practical real-world recipes. These recipes will help you get the most from the STL and show you how to program in a better way.

Write modular C++ applications in terms of the existing and newly introduced features; Identify code-smells, clean up, and refactor legacy C++ applications; Leverage the possibilities provided by Cucumber and Google Test/Mock to automate test cases; Deep dive into the details of the how various operating systems currently implement multithreading; Choose the best multithreading APIs when designing a new application; Explore the use of mutexes, spin-locks, and other synchronization concepts and see how to safely pass data between threads; Work with strings the STL way instead of handcrafting C-style code; Understand standard support classes for concurrency and synchronization, and how to put them to work; Use the filesystem library addition available with the C++17 STL.