Advanced C++ Programming

Advance your software development career by mastering modern C++ programming techniques, designed for experienced developers who seek to optimize coding practices through a comprehensive, hands-on course.

Course Thumbnail

Essential Skills Gained

Checkmark

Understand and apply modern C++ programming concepts.

Checkmark

Implement robust memory management techniques.

Checkmark

Explore advanced inheritance and polymorphism.

Checkmark

Develop proficiency with the Standard C++ Library.

Format

  • Instructor-led
  • 4 days with lectures and hands-on labs.

Audience

  • Experienced C++ Developers
  • Software Engineers
  • System Programmers
  • Technical Team Leads

Description

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.

Calendar icon

Upcoming Course Dates

No upcoming dates. Please check back later.

Course Outline

Download PDF

Modern C++

  1. New keywords in C++ 11,14,17

  2. RAII - Modern memory management in C++ - overview

  3. Copy vs Move semantics

  4. Namespaces

Generic Programming

  1. General Purpose Functions

  2. Function Templates

  3. Template Parameters

  4. Template Parameter Conversion

  5. Function Template Problem

  6. Generic Programming

  7. General Purpose Classes

  8. Class Templates

  9. Class Template Instantiation

  10. Non-Type Parameter

  11. C++ Containers overview

  12. Variadic Templates

Memory Management

  1. The handle/body (Bridge) pattern

  2. Using strings effectively

  3. Smart Pointers

  4. Move constructor in depth

  5. Other features

Inheritance and Polymorphism

  1. Base Class Initializer List

  2. Composition

  3. Member Initialization List

  4. Order of Initialization

  5. Inheritance vs. Composition

  6. Interfaces

  7. Polymorphism

  8. Chaining Constructors

  9. Inheriting Constructors

Exception Handling

  1. Exception Handling

  2. try and catch

  3. Exception Flow of Control

  4. Context and Stack Unwinding

  5. Handling Exceptions in best Context

  6. Benefits of Exception Handling

  7. Unhandled Exceptions

  8. Clean Up

  9. Multiple Catch Handlers

Operator Overloading

  1. What is overloadable?

  2. Why overload operators?

  3. Functors

Unit Testing in C++

  1. Unit testing – Quick Overview

  2. Unit testing in C++

  3. Introduction

Functional Programming

  1. Overview

  2. The IoC pattern

  3. Dependency Injection

  4. Functions as objects

  5. IoC via interface

  6. Functors

  7. IoC with Functors

  8. Implementing Functors

  9. Function Pointers

  10. IoC with Function Pointers

  11. Lambda Expressions

  12. Lambda Syntax

  13. IoC with Lambdas

Runtime Type Information

  1. Runtime Type and Polymorphism

  2. type_info Class

  3. typeid Operator

  4. Compiler Options

  5. Safe Pointer Conversions

  6. Dynamic Cast

  7. New C++ Style Casts

  8. Static Cast

  9. Reinterpret Cast

  10. Const Cast

STL Containers

  1. Vectors

  2. Vector.cpp

  3. Vector Operations

  4. Typedefs

  5. Deques

  6. deque as Stack

  7. deque Functionality

  8. Lists

  9. Generic Programming

  10. Tradeoff with Lists

  11. List Memory Allocation

  12. list Functionality

  13. Associate Containers

  14. Sets

  15. Sets with User Defined Objects

  16. Multisets (Bags)

  17. Maps

  18. Multimaps

  19. Functional Programming with Containers

STL Iterators

  1. Pointers

  2. Template Version

  3. String Version

  4. A Generalization of Pointers

  5. STL Iterators

  6. Input Iterators

  7. Output Iterators

  8. Forward Iterators

  9. Bidirectional Iterators

  10. Random Access Iterators

Threads & Tasks

  1. Overview Threads

  2. Starting Threads

  3. Managing threads

  4. Overview of Tasks

  5. Tasks

  6. async

Your Team has Unique Training Needs.

Your team deserves training as unique as they are.

Let us tailor the course to your needs at no extra cost.