Modern C++ Design Patterns

Design patterns have proven themselves invaluable over several decades and thus knowledge about them is essential to design robust, decoupled systems. Modern C++, however, has profoundly changed the way we use C++, how we think about design and implement solutions. This also affects how we implement design patterns.

    This training class explores modern C++ design and the modern forms of classic design patterns. It provides guidelines, idioms and best practices for sustainable and maintainable design, which enables programmers to create professional, high-quality code. Amongst others it will answer the following questions:

    • How does good C++ design with a minimum of dependencies look like?
    • What are the most important rules for robust, maintainable, and sustainable design?
    • What are the most common pitfalls in C++ software design?
    • Why does classical C++ design based on inheritance hierarchies fail so often?
    • How are the classic design patterns implemented in modern C++?
    • What are alternatives to the classic design patterns?

    After this course, participants will ...
    ... have a detailed understanding of the essential design principles;
    ... understand the benefits of separation of concerns;
    ... be able to design code with minimum dependencies;
    ... have an impression of the modern alternatives of classic design patterns;
    ... have gained knowledge about modern design techniques;
    ... understand how std::function, std::any, and ranges work;
    ... favor composition over inheritance;
    ... avoid the usual pitfalls in the context of inheritance;
    ... know about the importance of value semantics;
    ... comprehend the advantages of non-intrusive design.

    Prerequisites
    Participants are required to have at least two to three years of C++ experience. The course expects that all participants are familiar with the syntax of the language and have used inheritance and templates before.

    Computer Setup
    For the hands-on programming tasks, you are expected to use your own machine. Any operating system (Windows, Linux, MacOS, ...), any IDE/editor (MS Visual Studio, CLion, vi, emacs, ...) and any compiler capable of at least C++14 (GCC, Clang, MSVC, ...) can be used

    Klaus Iglberger
    C++ Trainer/Consultant

    Klaus Iglberger is a freelance C++ trainer and consultant. He is passionate talking about clean, safe and maintainable C++ and shares his expertise in popular C++ courses — from beginner to advanced — all around the world. He is the author of “C++ Software Design” (https://www.oreilly.com/library/view/c-software-design/9781098184704/), one of the organizers of the Munich C++ user group (https://www.meetup.com/MUCplusplus/), and the (co-)organizer of the Back-to-Basics and Software Design tracks at CppCon.

    NDC Conferences uses cookies to see how you use our website. We also have embeds from YouTube and Vimeo. How do you feel about that?