Application Development & Programming Training Icon

Advanced C++ Programming (Modern Advanced C++)

5 Days Classroom Session   |  
5 Days Live Online
Classroom Registration
Live Online Registration
Live Online:
Private Onsite Package

This course can be tailored to your needs for private, onsite delivery at your location.

Request a Private Onsite Price Quote

Professional Credits


ASPE is an IIBA Endorsed Education Provider of business analysis training. Select Project Delivery courses offer IIBA continuing development units (CDU) in accordance with IIBA standards.


Select courses offer Leadership (PDU-L), Strategic (PDU-S) and Technical PMI professional development units that vary according to certification. Technical PDUs are available in the following types: ACP, PBA, PfMP, PMP/PgMP, RMP, and SP.


Advanced C++ Programming (Modern Advanced C++) is a lab-intensive, hands-on C++ training course geared for experienced C++ programmers who wish to take their development skills to the next level.  Students will leave this course armed with the required skills to put advanced C++ programming skills right to work in a practical environment, using sound coding techniques and best practices.

This comprehensive course consists of three modules. A preliminary module reviews topics, including inheritance, the ANSI C++ Standard Library, templates. I/O streams, and practical issues of C++ programming, such as reliability & testing. This material is covered as needed depending on the background of the students.

The second module covers more advanced topics.  Unit testing, advanced inheritance & polymorphism are discussed.  Memory management along with move constructors and RAII are explored.  Templates and generic programming are explored including lambda expressions and functors.  The third module is a deep dive into  the Standard C++ Library.  Containers, Algorithms, Threads and much more.

Throughout the course, new features of modern C++ (version 11 and beyond) are introduced as well as the impact on programming style.  These new features include smart pointers, move constructors, functional programming and lambda expressions.


In this training course, learn about:

C++ Fundamentals Refresher
Modern C++
Generic Programming
Memory Management
Inheritance and Polymorphism
Unit Testing in C++
Functional Programming
STL Containers
STL Iterators
Threads & Tasks
Upcoming Dates and Locations
All Live Online times are listed in Eastern Time Guaranteed To Run

There aren’t any public sessions currently scheduled for this course, but if you fill out the form below, we can tell you about how we can bring this course to you!

Course Outline

Session: Overview/Review of C++

·         Implementing a basic O-O design

·         Implementing Classes


Session: Modern C++

·         New keywords in C++ 11,14,17

·         RAII - Modern memory management in C++ - overview

·         Copy vs Move semantics

·         Namespaces


Session: Generic Programming

·         General Purpose Functions

·         Function Templates

·         Template Parameters

·         Template Parameter Conversion

·         Function Template Problem

·         Generic Programming

·         General Purpose Classes

·         Class Templates

·         Class Template Instantiation

·         Non Type Parameter

·         C++ Containers overview

·         Variadic Templates


Session: Memory Management

·         The handle/body (Bridge) pattern

·         Using strings effectively

·         Smart Pointers

·         Move constructor in depth

·         Other <memory> features


Session: Inheritance and Polymorphism

·         Base Class Initializer List

·         Composition

·         Member Initialization List

·         Order of Initialization

·         Inheritance vs. Composition

·         Interfaces

·         Polymorphism

·         Chaining Constructors

·         Inheriting Constructors


Session: Exception Handling

·         Exception Handling

·         try and catch

·         Exception Flow of Control

·         Context and Stack Unwinding

·         Handling Exceptions in best Context

·         Benefits of Exception Handling

·         Unhandled Exceptions

·         Clean Up

·         Multiple Catch Handlers


Session: Operator Overloading

·         What is overloadable?

·         Why overload operators?

·         Functors


Session: Unit Testing in C++

·         Unit testing – Quick Overview

·         Unit testing in C++

·         Introduction <catch.hpp>


Session: Functional Programming

·         Overview

·         The IoC pattern

·         Dependency Injection

·         Functions as objects

·         IoC via interface

·         Functors

·         IoC with Functors

·         Implementing Functors

·         Function Pointers

·         IoC with Function Pointers

·         Lambda Expressions

·         Lambda Syntax

·         IoC with Lambdas


Session: Runtime Type Information

·         Runtime Type and Polymorphism

·         type_info Class

·         typeid Operator

·         Compiler Options

·         Safe Pointer Conversions

·         Dynamic Cast

·         New C++ Style Casts

·         Static Cast

·         Reinterpret Cast

·         Const Cast


Session: STL Containers

·         Vectors

·         Vector.cpp

·         Vector Operations

·         Typedefs

·         Deques

·         deque as Stack

·         deque Functionality

·         Lists

·         Generic Programming

·         Tradeoff with Lists

·         List Memory Allocation

·         list Functionality

·         Associate Containers

·         Sets

·         Sets with User Defined Objects

·         Multisets (Bags)

·         Maps

·         Multimaps

·         Functional Programming with Containers


Session: STL Iterators

·         Pointers

·         Template Version

·         String Version

·         A Generalization of Pointers

·         STL Iterators

·         Input Iterators

·         Output Iterators

·         Forward Iterators

·         Bidirectional Iterators

·         Random Access Iterators


Session: Threads & Tasks

·         Overview Threads

·         Starting Threads

·         Managing threads

·         Overview of Tasks

·         Tasks

·         async

·         Future & Promise


Who should attend

This an intermediate and beyond-level programming course, designed for experienced C++ developers.  This course is not recommended for developers new to C++ programming.


This an intermediate and beyond-level programming course, designed for experienced C++ developers.  This course is not recommended for developers new to C++ programming.