Defining C++ Classes
Creating C++ Objects
Constructors in C++
Destructors in C++
The 'this' Pointer
Encapsulation Intro
Public Access Modifier
Private Access Modifier
Protected Access Modifier
Single Inheritance
Multiple Inheritance
Virtual Functions
Abstract Classes
Polymorphism Explained
Stack Memory Explained
Heap Memory Explained
Stack vs. Heap: Key Differences
Dynamic Allocation with New
Deallocation with Delete
New and Delete: Best Practices
Pointers Refresher
Pointers and Dynamic Memory
Memory Leaks Explained
Dangling Pointers Explained
Intro to Smart Pointers
Unique Pointers
Shared Pointers
Weak Pointers
C++ Build Stages
Preprocessing Explained
Compilation Demystified
Linking: Putting It All Together
Static vs Dynamic Linking
Basic g++ Usage
Compiling Multiple Files
Linking External Libraries
Debugging with g++
Why Use a Build System?
Make: A Simple Build Tool
Writing Basic Makefiles
CMake: Cross-Platform Builds
CMake and External Libs