Skip to content

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.