Course Overview
TOPC++ 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 4 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.
Scheduled Classes
TOPOutline
TOP- Quick Review of C++
- Implementing a basic O-O design
- Implementing Classes
- Visibility & friends
- File organization
- C++ types structs, classes, interfaces, enums
- 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
- 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
- Memory Management
- The handle/body (Bridge) pattern
- Using strings effectively
- Smart Pointers
- Move constructor in depth
- Other
features
- Unit Testing in C++
- Unit testing - Quick Overview
- Unit testing in C++
- Using GTest
- 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
- Exceptions
- Review of the basics: try, catch, throw
- The throws declaration in modern C++
- Using noexcept
- Overriding terminate
- Operator Overloading & Conversion
- Basics
- Essential Operators
- Conversion Operators
- Constructor as conversion
- Explicit vs Implicit conversion
- 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
- Standard Library
- Perspective
- History and Evolution
- New Features
- Generic Programming
- Containers
- Algorithms
- Numerics
- Dates & Times
- Initializer List
- Introduction to Multitasking
- Threads
- Tasks
- Async
Prerequisites
TOPThis 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.
Incoming students should have practical skills equivalent to the topics in, or should have recently attended, one of these courses as a pre-requisite:
TTCP2100: Introduction to C++ Programming
Who Should Attend
TOPThis is an intermediate level development course designed for developers with prior C++ programming experience. Students without prior C++ programming background are also eligible to enroll in this course provided they take the pre-requisite training.