Modern Advanced C++ (Advanced C++ Programming
Prepare yourself with the skills to put advanced C++ programming skills right to work in a practical environment, using sound coding techniques and best practices.
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.
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.
This “skills-centric” course is about 50% hands-on lab and 50% lecture, designed to train attendees in basic coding with C++, coupling the most current, effective techniques with the soundest industry practices.
Duration
4 days/32 hours of instructionPublic Classroom Pricing
Starting at: $2495(USD)
GSA Price: $1870
Group Rate: $2395
Private Group Pricing
Have a group of 5 or more students? Request special pricing for private group training today.
Part 1: Modern C++
- New keywords in C++ 11,14,17
- RAII – Modern memory management in C++ – overview
- Copy vs Move semantics
- Namespaces
Part 2: 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
Part 3: Memory Management
- The handle/body (Bridge) pattern
- Using strings effectively
- Smart Pointers
- Move constructor in depth
- Other <memory> features
Part 4: Inheritance and Polymorphism
- Base Class Initializer List
- Composition
- Member Initialization List
- Order of Initialization
- Inheritance vs. Composition
- Interfaces
- Polymorphism
- Chaining Constructors
- Inheriting Constructors
Part 5: 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
Part 6: Operator Overloading
- What is overloadable?
- Why overload operators?
- Functors
Part 7: Unit Testing in C++
- Unit testing – Quick Overview
- Unit testing in C++
- Introduction <catch.hpp>
Part 8: 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
Part 9: 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
Part 10: 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
Part 11: STL Iterators
- Pointers
- Template Version
- String Version
- A Generalization of Pointers
- STL Iterators
- Input Iterators
- Output Iterators
- Forward Iterators
- Bidirectional Iterators
- Random Access Iterators
Part 12: Threads & Tasks
- Overview Threads
- Starting Threads
- Managing threads
- Overview of Tasks
- Tasks
- async
- Future & Promise
This an intermediate and beyond-level programming course, designed for:
- Experienced C++ developers.
- This course is not recommended for developers new to C++ programming.
- C++ Fundamentals Refresher
- Modern C++
- Generic Programming
- Memory Management
- Inheritance and Polymorphism
- Unit Testing in C++
- Functional Programming
- STL Containers
- STL Iterators
- Threads & Tasks