03-26-Object Reuse

Preview unavailable

You must log in or sign up to view this lesson.

LoginSign up

Modern C++ Programming course

Buy nowLearn more

Introduction

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

1: Introduction to C++

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

2: Language Fundamentals

  • 02-01-Including Files
  • 02-02-Macros
  • 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