• $690 or 10 monthly payments of $73

Modern C++ Programming course

  • Course
  • 201 Lessons
  • Includes 1 private space
  • Discord access

Modern C++ Programming Masterclass is a comprehensive course designed to equip developers with the essential and advanced skills needed to write efficient, robust, and modern C++ code. Whether you're aiming to build large-scale applications, simple tools, or conduct research, this course offers a structured journey through the language’s fundamentals and its modern features.

Includes 1 private space

  • Windows Internals & Programming

Read more about the instructors, course contents and special pricing:

Contents

Introduction

00-01-Introduction
Preview
00-02-Course Contents
00-03-Resources
C++ProgrammingMasterClassLabs.pdf
C++ Programming Masterclass.pdf

1: Introduction to C++

01-01-C++ Overview
Preview
01-02-C++ Hello World
01-03-Builing and Tooling
01-04-External Libraries
01-05-Static and Dynamic Linking
01-06-Package Managers

2: Language Fundamentals

02-01-Including Files
02-02-Macros
Preview
02-03-Conditional Compilation and Pragmas
02-04-Integral Data Types
02-05-Variables
02-06-Floating Point Data Types
02-07-Character Data Types
02-08-sizeof and const
02-09-Literals
02-10-Arrays
02-11-Pointers
02-12-Pointer Arithmetic
02-13-References
02-14-void and void Pointers
02-15-const and Pointers
02-16-Classic Enums
02-17-Scoped Enums
02-18-the volatile Qualifier
02-19-Arithmetic Operators
02-20-Relational and Logical Operators
02-21-Bitwise Operators
02-22-Assignment Operators
02-23-Operators Precedence and Associativity
02-24-Expressions
02-25-Modulo, Division and Integral Types
02-26-Control Flow - If Statement
02-27-Initializers in If Expressions
02-28-Control Flow - the Switch Statement
02-29-Control Flow - While and Do While
02-30-Loop Control
02-31-Control Flow - the for Loop
02-32-Functions
02-33-Trailing Return Type Syntax
02-34-the main Function
02-35-Labs Solutions Walkthrough
02-36-Passing Arguments to Functions
02-37-Inline Functions
02-38-Recursive Functions
02-39-constexpr
02-40-Function Overloading
02-41-Default Arguments
02-42-Function Argument Matching
02-43-the Stack and the Heap
02-44-Basic new and delete Usage
02-45-Namespaces
02-46-Casting

3: Object Oriented Programming

03-01-Object Orientation
03-02-Classes
03-03-Creating Objects
03-04-Constructors
03-05-Multi-Dimensional Arrays
03-06-the Conditional Operator
03-07-Additional Module 2 Labs Solutions Walkthrough
03-08-Review and Anonymous Objects
03-09-Delegating Constructors
03-10-const Member Functions and the mutable Keyword
03-11-the this Keyword
03-12-Member Visibility
03-13-static Members
03-14-Explicit Constructors
03-15-Destructors
03-16-Inheritance
03-17-Polymorphism
03-18-More Polymorphism
03-19-Abstract Types
03-20-Copying and Moving
03-21-Copy Constructor and Copy Assignment
03-22-Move Semantics
03-23-Move Constructor and Move Assignment
03-24-Making Things Move
03-25-Defaulted and Deleted Methods
03-26-Object Reuse
03-27-Forward Declarations
03-28-Simple Structure Initialization
03-29-Unions
03-30-Bit Fields
03-31-Nested Types

4: Operator Overloading

04-01-Overview
04-02-Member vs. Free Functions
04-03-Unary Operators
04-04-Overloading ++ and --
04-05-Binary Operators
04-06-Dynamic Cast
04-07-Binary Operators (cont)
04-08-Operator Overloading with Global Functions
04-09-Overloading Cast Operators
04-10-Explicit and Implicit Operators

5: Standard Library Basics

05-01-The Standard Library
05-02-Containers
05-03-Vector
05-04-Type Inference (auto)
05-05-Range-Based for
05-06-Array
05-07-Deque and List
05-08-Associative Containers
05-09-New Associative Containers
05-10-Container Adapters
05-11-Iterators
05-12-Algorithms
05-13-Review and Clarifications
05-14-erase and Iterators
05-15-Algorithms and Function Pointers
05-16-Functors
05-17-Strings
05-18-String Views
05-19-Emplacement vs. Insertion

6: I/O and Streams

06-01-Streams
06-02-Stream Manipulators
06-03-File IO
06-04-format (C++ 20)
06-05-Using format
06-06-Formatting Custom Types

7: Modern Language Features

07-01-Lambda Functions
07-02-Lambda Rules
07-03-Lambda Captures
07-04-Storing Lambdas
07-05-Lambda Functions and auto
07-06-Uniform Initialization
07-07-Initializer Lists
07-08-Compile Time Assertions
07-09-Structural Decomposition
07-10-Attributes
07-11-decltype
07-12-noexcept
07-13-Module 3 Labs Solution Walkthrough
07-14-Thread Local Storage

8: Templates

08-01-Why Templates
08-02-Template Functions
08-03-Template Matching
08-04-Multiple Type Parameters
08-05-More on Template Functions
08-06-Template Instantiation
08-07-Template Linkage
08-08-Template Classes
08-09-Default Template Parameters
08-10-Memory Allocators
08-11-Template Specialization
08-12-Template Aliases
08-13-Creative Template Usage
08-14-Trait Classes
08-15-More Templates Features
08-16-Template Metaprogramming
08-17-Variadic Templates

9: Resource Management

09-01-RAII
09-02-RAII Examples
09-03-RAII in the Standard Library
09-04-Memory Management
09-05-unique_ptr
09-06-Smart Pointer Implementation
09-07-Custom Deleters
09-08-The Pimpl Idiom
09-09-shared_ptr
09-10-weak_ptr
09-11-Error Handling
09-12-Exceptions
09-13-Catching and Handling Exceptions

10: The C++ Standard Library

10-01-Overview
10-02-Random Numbers
10-03-variant
10-04-optional
10-05-any
10-06-invoke and apply
10-07-expected
10-08-chrono

11: Concurrency

11-01-Threads vs. Processes
11-02-CPUs
11-03-CPUs and Caches
11-04-Interlude - unique_ptr for Arrays
11-05-False Sharing
11-06-C++ Memory Model
11-07-Optimizations
11-08-Atomic Operations
11-09-Lazy Initialization
11-10-Threads
11-11-More Threading
11-12-Synchronization and Mutexes
11-13-Locks and Deadlocks
11-14-Protecting Rarely Updated Data
11-15-Recursive Locking
11-16-Condition Variables
11-17-More Concurrency

12: More C++

12-01-Concepts
12-02-Ranges
12-03-Views
12-04-Modules
12-05-Coroutines

Lab Solutions

Module02.zip
Module03.zip
Module04.zip
Module05.zip