Banner

Advanced C++ Programming | Advanced Modern C++

Live Classroom
Duration: 4 days
Live Virtual Classroom
Duration: 4 days
Pattern figure

Overview

This course is designed as a combination of high quality and advanced topics, taught in a practical manner with the aim of enhancing the participants’ skills in C++ programming. The course provides a holistic overview of a wide range of topics such as inheritance, the ANSI C++ Standard Library, templates, I/O streams, as well as the challenges to efficient C++ programming and testing. It goes on to cover advanced topics such as advanced inheritance and polymorphism, rules of effective class design, including the use of composition and generic programming including lambda expressions and functors. Participants will benefit from the detailed explanations by experts on how each feature impacts programming styles, thus enabling them to apply them for practical exercises.

What You'll Learn

  • Inheritance and Polymorphism
  • ANSI C++ Library
  • Practical Aspects of C++ Programming
  • Advanced Polymorphism and Inheritance
  • Exception Handling
  • Runtime Type Information
  • Inheritance Hierarchies and Multiple Inheritance
  • Applications of C++ Concepts
  • An Overview of Templates
  • Overview of STL

Curriculum

  • Implementing a basic O-O design
  • Implementing classes

  • New keywords in C++ 11,14,17
  • RAII – Modern memory management in C++ – overview
  • Copy vs move semantics
  • Namespaces

  • 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

  • The handle/body (Bridge) pattern
  • Using strings effectively
  • Smart Pointers
  • Move constructor in depth
  • Other features

  • Base Class Initializer List
  • Composition
  • Member Initialization List
  • Order of Initialization
  • Inheritance vs. Composition
  • Interfaces
  • Polymorphism
  • Chaining Constructors
  • Inheriting Constructors

    • 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

    • What is overloadable?
    • Why overload operators?
    • Functors

    • Unit testing – Quick Overview
    • Unit testing in C++
    • Introduction

    • 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

    • 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

    • Vectors
    • 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

    • Pointers
    • Template Version
    • String Version
    • A Generalization of Pointers
    • STL Iterators
    • Input Iterators
    • Output Iterators
    • Forward Iterators
    • Bidirectional Iterators
    • Random Access Iterators

    • Overview Threads
    • Starting Threads
    • Managing threads
    • Overview of Tasks
    • Tasks
    • async
    • Future & Promise
    waves
    Ripple wave

    Who should attend

    This course is recommended for:

    • Advanced software developers (C++)
    • Technical project managers
    • Advanced systems programming (C++)
    • Senior C++ software developers

    Prerequisites

    Participants need to have have prior C++ programming experience.

    Interested in this Course?

      Ready to recode your DNA for GenAI?
      Discover how Cognixia can help.

      Get in Touch
      Pattern figure
      Ripple wave