© 2026 Dometrain. All rights reserved.
Build on basic C++ by writing value types, copy and move operations, class hierarchies, templates, lambdas and standard algorithms as tested exercises in your browser.
Once you can write classes, use std::vector and std::map, and hold a heap object in a std::unique_ptr, the next questions are about what your types do when they are copied, moved, compared, passed around and destroyed. This course answers them with code, across 56 hands-on exercises. The compiler runs inside the browser page, so there is no toolchain to set up. A lesson takes one idea and shows the C++ that expresses it; you then write a function or a class, and the tests exercise it with inputs of their own.
You start with types that carry meaning: enum class, constexpr and static_assert, std::array and explicit constructors. Then you give your own types operators, write copy constructors and copy assignment for a class that owns memory, and learn move semantics: rvalue references, std::move, the rule of five and the rule of zero, returning by value, and why noexcept changes how a std::vector grows. Next come inheritance and virtual functions, abstract interfaces and object slicing, followed by templates (class templates, specialization, type traits, if constexpr and fold expressions) and lambdas with captures and std::function. The later chapters cover iterator-based algorithms, std::tuple, std::string_view, std::variant with std::visit, a custom hash, the container adaptors and string streams, and shared ownership with std::shared_ptr and std::weak_ptr. Three practice lessons combine it all: an undo history, a generic sorted container, and an expression evaluator.
It is written for developers coming out of C++ for Beginners, and for anyone who already writes C++ classes, uses the standard containers, and wants their own types to work with them as smoothly as std::string does. Everything stays within C++17.