Advanced C++

Learn what's necessary to do real OOP in C++ — and much more

To be a master of a language, one must know its idioms. This is particularly important for C++: a highly idiomatic language. Much of the object-oriented power of C++ owes to these idioms: separating interface from implementation, reference counting, specific tricks for framework design, making templates efficient. The course is based on the popular book, “Advanced C++” and is taught by its author.


This course is intended for

    1. C++ programmers

    2. System designers

    3. Software Architects


Programmers should have at least one year of C++ programming experience.

Course objectives

After taking this course, attendees will be able to:

    1. Make robust object-oriented design in C++: efficient, safe, extensible.

    2. Increase the flexibility of object-oriented designs in C++

    3. Simulate powerful object-oriented features (multiple dispatch, dynamic run-time typing) that are not native to C++

Syllabus (2 days)

    1. Design, Patterns, and Pattern Languages

    2. Pattern Sections

    3. The “Wholes” of OO Pattern Languages

    4. Class Hierarchy Patterns

        • Handle/Body

        • Counted Body

        • Detached Counted Body

        • Handle/Body Hierarchies

        • Envelope/Letter

        • Virtual Constructors

        • Concrete Data Types

        • Multiple Inheritance

    5. An Abelian Pattern Language

        • Algebraic Hierarchy

        • Homogeneous Addition

        • Promote and Add

        • Heterogeneous Addition

        • Promotion Ladder

        • Non-Hierarchical Addition

        • Type Promotion

Based on the critically-acclaimed classic and taught by its author