Intermediate C++ 20 Programming | Effective C++

Intermediate C++ Programming | Effective 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.

Retail Price: $2,595.00

Next Date: 12/02/2024

Course Days: 4


Enroll in Next Date

Request Custom Course


Course Objectives

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. Students will explore:

  • Overview/Review of C++
  • Modern C++ 11, 14, 17
  • Templates
  • Memory Management
  • Inheritance and Polymorphism
  • Exception Handling
  • Input/Output in C+
  • Unit Testing in C++
  • Advanced Polymorphism and Inheritance
  • Functional Programming
  • Runtime Type Information
  • Overview of Standard Library
  • STL Containers
  • STL Iterators
  • Threads & Tasks

Course Prerequisites

This is an intermediate level development course designed for developers with prior C++ programming experience.  Students without prior C++ programming background should take the pre-requisite training.

Please see the Related Courses tab for specific Pre-Requisite courses, Related Courses that offer similar skills or topics, and next-step Learning Path recommendations.


Course Agenda

 

Please note that this list of topics is based on our standard course offering, evolved from typical industry uses and trends. We’ll work with you to tune this course and level of coverage to target the skills you need most.

  1. Quick Review of C++
  • Implementing a basic O-O design
  • Implementing Classes
  • Visibility & friends
  • File organization
  • C++ types – structs, classes, interfaces, enums
  1. Modern C++
  • New keywords in C++ 11,14,17
  • RAII - Modern memory management in C++ - overview
  • Copy vs Move semantics
  • Namespaces
  1. Templates
  • 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
  1. Memory Management
  • The handle/body (Bridge) pattern
  • Using strings effectively
  • Smart Pointers
  • Move constructor in depth
  • Other <memory> features
  1. Inheritance and Polymorphism
  • Inheritance Concept
  • Inheritance in C++
  • Protected Members
  • Base Class Initializer List
  • Composition
  • Member Initialization List
  • Order of Initialization
  • Inheritance vs. Composition
  • A Case for Polymorphism
  • Dynamic Binding
  • Pointer Conversion in Inheritance
  • Polymorphism Using Dynamic Binding
  • Virtual Function Specification
  • Invoking Virtual Functions
  • VTable
  • Virtual Destructors
  • Abstract Class Using Pure Virtual Function
  • Interfaces
  1. 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
  1. Input/Output in C+
  • Input/Output in C++
  • Built-in Stream Objects
  • Output Operator <<
  • Input Operator >>
  • Character Input
  • String Input
  • Formatted I/O
  • Streams Hierarchy (Simplified)
  • File I/O
  • File Opening
  • Integer File Copy
  • Character File Copy
  • Overloading Stream Operators
  • Implementing Overloaded Stream Operators
  1. Unit Testing in C++
  • Unit testing – Quick Overview
  • Unit testing in C++
  • Introduction <catch.hpp>
  1. Advanced Polymorphism and Inheritance
  • Good Class Design
  • string Class
  • Public Inheritance
  • Public Inheritance Problems
  • Inheritance and Semantics
  • Private Inheritance
  • Composition
  • Composition vs. Private Inheritance
  • Templates vs. Inheritance
  • Protected Inheritance
  • Implementation Encapsulation
  • Interface Inheritance
  • Multiple inheritance issues
  1. 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
  1. 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
  1. Overview of Standard Library
  • Perspective
  • History and Evolution
  • New Features
  • The Standard Template Library
  • Generic Programming
  • Design Goals
  • Header Files
  • STL Components
  • Containers
  • Algorithms
  • Iterators
  • Threads & Tasks
  1. 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
  1. STL Iterators
  • Pointers
  • Template Version
  • String Version
  • A Generalization of Pointers
  • STL Iterators
  • Input Iterators
  • Output Iterators
  • Forward Iterators
  • Bidirectional Iterators
  • Random Access Iterators
  1. Threads & Tasks
  • Overview Threads
  • Starting Threads
  • Managing threads
  • Overview of Tasks
  • Tasks
  • async
  • Future & Promise
Course Dates Course Times (EST) Delivery Mode GTR
12/2/2024 - 12/5/2024 10:00 AM - 6:00 PM Virtual gauranteed to run course date Enroll
2/3/2025 - 2/6/2025 10:00 AM - 6:00 PM Virtual Enroll
4/14/2025 - 4/17/2025 10:00 AM - 6:00 PM Virtual Enroll
6/23/2025 - 6/26/2025 10:00 AM - 6:00 PM Virtual Enroll
8/4/2025 - 8/7/2025 10:00 AM - 6:00 PM Virtual Enroll
10/6/2025 - 10/9/2025 10:00 AM - 6:00 PM Virtual Enroll
12/1/2025 - 12/4/2025 10:00 AM - 6:00 PM Virtual Enroll