Intermediate¶
You know the syntax, but pointers, classes, and memory still feel shaky — and your programs are one big main.cpp. This track teaches what makes C++ C++: how objects live and die, RAII and smart pointers, classes with value semantics, templates, the STL, and the tooling (CMake, tests) real projects use.
Prerequisites¶
Finish the beginner track — or be comfortable with functions, references, std::vector, std::map, multi-file builds, files, and exceptions.
Lessons¶
| # | Lesson | You'll learn |
|---|---|---|
| 1 | Pointers & references | addresses, * and &, nullptr, const correctness, pointer vs reference |
| 2 | Memory: the stack, the heap & RAII | object lifetime, new/delete and why not, destructors, RAII |
| 3 | Smart pointers | std::unique_ptr, std::shared_ptr, std::weak_ptr, ownership |
| 4 | Classes: fundamentals | members, constructors, invariants, const methods, static |
| 5 | Copy, move & the rule of five | copy/move constructors and assignment, rule of zero/three/five |
| 6 | Operator overloading | arithmetic ops, <=>, ==, <<, [], () |
| 7 | Inheritance & polymorphism | virtual, override, abstract classes, slicing, virtual destructors |
| 8 | Templates | function and class templates, deduction, specialization, auto params |
| 9 | STL algorithms & lambdas | captures, iterator categories, the key algorithms, std::function |
| 10 | Build systems: CMake | targets, target_link_libraries, FetchContent, presets, warnings |
| 11 | Testing with Catch2 | TEST_CASE, SECTION, REQUIRE, generators, CTest integration |
| 12 | Capstone: link checker | a CMake-built, tested, multi-module CLI tool |
When you're done¶
Your capstone should build warning-free with -Wall -Wextra -Werror, have tests that run with ctest, and pass under AddressSanitizer. Then go to Advanced.