04-04-Overloading ++ and --
Preview unavailable
You must log in or sign up to view this lesson.
Login
Sign up
Modern C++ Programming course
Buy now
Learn more
Introduction
00-01-Introduction
00-02-Course Contents
00-03-Resources
C++ProgrammingMasterClassLabs.pdf
1
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 Managers
1
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