Intermediate C++ 20 Programming | Effective C++ 20 (TTCP2150)

Explore C++ Templates, Memory Management, Functional Programming, Unit Testing & Modern Features & More

TTCP2150

Intermediate and Beyond

4 Days

Course Overview

Overview

C++ is a powerful, high-performance programming language that offers an ideal blend of low-level memory manipulation and high-level abstraction capabilities. Learning C++ is a valuable investment for developers, as it opens the door to creating efficient, versatile, and complex applications that run on a variety of platforms. Modern companies across diverse industries – including finance, gaming, automotive, and telecommunications – rely on C++ for developing performance-critical applications, system software, and embedded systems. Renowned organizations like Google, Facebook, and Microsoft continue to leverage the power of C++ in their development practices, solidifying its status as a crucial skill for developers seeking lucrative and challenging career opportunities.

Geared for experienced C++ developers, Intermediate C++ 20 / Effective C++ 20 is a four day, hands-on program that dives covers a broad spectrum of topics – from the quick review of C++ essentials to modern C++ features, memory management, unit testing, and more. Our expert instructors will walk you through a comprehensive journey, investigating cutting-edge concepts such as RAII, copy and move semantics, namespaces, templates, and C++ 20 Concepts & auto Templates. You'll learn to leverage the power of modern C++ and unravel the intricacies of memory management, including the handle/body pattern, smart pointers, and move constructors. By the end of this course, you'll have an in-depth understanding of C++ memory, pointers, and complexity.

Working in a hands-on environment, explore the art of functional programming and discover how the IoC pattern, dependency injection, functors, and lambda expressions can bring about significant enhancements to your code. With a strong emphasis on SOLID principles, inheritance, polymorphism, exceptions, and operator overloading, this course will help you design robust, maintainable, and scalable modern applications.  You’ll also expand your C++ toolset by exploring the rich offerings of the Standard Library, mastering the essentials of containers, algorithms, numerics, dates, and times. Gain a solid introduction to multitasking with threads, tasks, and async. As a bonus, you'll also learn how to implement effective unit testing in C++ using GTest, ensuring your code is reliable and bug-free.

Join our immersive training experience and become an adept C++ developer with unparalleled skills in the latest C++ 20 programming techniques. This fast-paced, lab-intensive course is designed to equip you with the knowledge and confidence to tackle the most challenging C++ development projects.

 

Learning Objectives

Working in a hands-on learning environment, guided by our expert team you’ll learn to:

  • Master intermediate to advanced C++ 20 programming techniques, enabling the development of efficient and maintainable applications using the latest features and best practices.
  • Acquire in-depth knowledge of memory management in C++, including the handle/body pattern, smart pointers, and move constructors, to optimize performance and minimize memory-related issues.
  • Develop proficiency in functional programming with C++, incorporating concepts such as dependency injection, functors, and lambda expressions to enhance code flexibility and modularity.
  • Gain expertise in utilizing the C++ Standard Library for generic programming, mastering the use of containers, algorithms, numerics, and other features to create powerful, reusable code components.
  • Learn to implement effective unit testing in C++ using GTest, ensuring the reliability and robustness of your applications through rigorous testing methodologies.
  • Understand the basics of multitasking in C++, exploring threads, tasks, and async for concurrent programming, empowering developers to create scalable and high-performance applications.

 

Course Objectives

Learning Objectives

Working in a hands-on learning environment, guided by our expert team you’ll learn to:

  • Master intermediate to advanced C++ 20 programming techniques, enabling the development of efficient and maintainable applications using the latest features and best practices.
  • Acquire in-depth knowledge of memory management in C++, including the handle/body pattern, smart pointers, and move constructors, to optimize performance and minimize memory-related issues.
  • Develop proficiency in functional programming with C++, incorporating concepts such as dependency injection, functors, and lambda expressions to enhance code flexibility and modularity.
  • Gain expertise in utilizing the C++ Standard Library for generic programming, mastering the use of containers, algorithms, numerics, and other features to create powerful, reusable code components.
  • Learn to implement effective unit testing in C++ using GTest, ensuring the reliability and robustness of your applications through rigorous testing methodologies.
  • Understand the basics of multitasking in C++, exploring threads, tasks, and async for concurrent programming, empowering developers to create scalable and high-performance applications.

Course Prerequisites

Audience & Pre-Requisites

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.

Take Before:  Incoming students should have practical skills equivalent to the topics in, or should have recently attended, one of these courses as a pre-reqsuite:

  • TTCP2100: Introduction to C++ Programming

Related Training | C++ Training Series

The following is a small subset of our related courses. Please see our full catalog for a complete list.

  • TTCP2000     Introduction to Programming and C++ Basics for Non-Programmers (TTCODE101-C / TTCP2000)
  • TTCP2100     Introduction to C++ Programming | C++ Essentials
  • TTCP2150     Intermediate C++ Programming | Effective +++ Programming
  • TTCP3103     Advanced C++ Programming
  • TTCP1250     Object Oriented Design Patterns and Best Practices in C++
  • TTCP1270     SOLID Design in C++

 

Course Agenda

Course Topics / Agenda

Please note that this list of topics is based on our standard course offering, evolved from typical industry uses and trends. We will work with you to tune this course and level of coverage to target the skills you need most. Course agenda, topics and labs are subject to adjust during live delivery in response to student skill level, interests and participation.

  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 features in C++ 11,14,17,20
  • RAII - Modern memory management in C++ - overview
  • Copy vs Move semantics
  • Namespaces
  • Strings
  • Input & Output
  • Implementing a linked-list – a demonstration of class, memory, pointers and complexity
  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
  • C++ 20 concepts & auto Templates
  1. Memory Management
  • The handle/body (Bridge) pattern
  • Using strings effectively
  • Smart Pointers
  • Move constructor in depth
  • Other <memory> features
  1. Unit Testing in C++
  • Unit testing – Quick Overview
  • Unit testing in C++
  • Using GTest
  1. Inheritance and Polymorphism
  • Inheritance Concept
  • Inheritance in C++
  • Virtual Function Specification
  • Invoking Virtual Functions
  • VTable
  • Virtual Destructors
  • Abstract Class Using Pure Virtual Function
  • Design for Polymorphism
  • Interfaces
  • Design for Interface
  • A SOLID introduction
  1. Exceptions
  • Review of the basics: try, catch, throw
  • The throws declaration in modern C++
  • Using noexcept
  • Overriding terminate
  1. Operator Overloading & Conversion
  • Basics
  • Essential Operators
  • Conversion Operators
  • Constructor as conversion
  • Explicit vs Implicit conversion
  1. Functional Programming
  • 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. Standard Library
  • Perspective
  • History and Evolution
  • New Features
  • Generic Programming
  • Containers
  • Algorithms
  • Numerics
  • Dates & Times
  • Initializer List
  1. Introduction to Multitasking
  • Threads
  • Tasks
  • Async

Course Materials

Student Materials & Lab Environment

All course software (limited versions, for course use only), digital courseware files or course notes, labs / data sets and solutions (as applicable) are provided for you in our “easy access / no install required” high-speed remote lab environment. Our tech team works with every student to ensure everyone is set up with working access and ready to go prior to every course start date, ensuring a smooth delivery and great hands-on experience. Please ask for details.

Raise the bar for advancing technology skills

Attend a Class!

Live scheduled classes are listed below or browse our full course catalog anytime

Special Offers

We regulary offer discounts for individuals, groups and corporate teams. Contact us

Custom Team Training

Check out custom training solutions planned around your unique needs and skills.

EveryCourse Extras

Exclusive materials, ongoing support and a free live course refresh with every class.

Attend a Course

Please see the current upcoming available open enrollment course dates posted below. Please feel free to Register Online below, or call 844-475-4559 toll free to connect with our Registrar for assistance. If you need additional date options, please contact us for scheduling.

Course Title Days Date Time Price
Intermediate C++ 20 Programming | Effective C++ 20 (TTCP2150) 4 Days Dec 2 to Dec 5 10:00 AM to 06:00 PM EST $2,595.00 Enroll
Intermediate C++ 20 Programming | Effective C++ 20 (TTCP2150) 4 Days Feb 3 to Feb 6 10:00 AM to 06:00 PM EST $2,595.00 Enroll
Intermediate C++ 20 Programming | Effective C++ 20 (TTCP2150) 4 Days Apr 14 to Apr 17 10:00 AM to 06:00 PM EST $2,595.00 Enroll
Intermediate C++ 20 Programming | Effective C++ 20 (TTCP2150) 4 Days Jun 23 to Jun 26 10:00 AM to 06:00 PM EST $2,595.00 Enroll
Intermediate C++ 20 Programming | Effective C++ 20 (TTCP2150) 4 Days Aug 4 to Aug 7 10:00 AM to 06:00 PM EST $2,595.00 Enroll

Mix, Match & Master!
2FOR1: Two Courses, One Price!

Enroll in *any* two public courses (for 2023 *OR* 2024 dates!) by December 31, for one price!  Learn something new, or share the promo!

Click for Details & Additional Offers

Learn. Explore. Advance!

Extend your training investment! Recorded sessions, free re-sits and after course support included with Every Course
Trivera MiniCamps
Gain the skills you need with less time in the classroom with our short course, live-online hands-on events
Trivera QuickSkills: Free Courses and Webinars
Training on us! Keep your skills current with free live events, courses & webinars
Trivera AfterCourse: Coaching and Support
Expert level after-training support to help organizations put new training skills into practice on the job

The voices of our customers speak volumes

Special Offers
Limited Offer for most courses.

SAVE 50%

Learn More