Skip to main content

C++ — Intermediate

Move from writing C++ to engineering it: memory and lifetime, object-oriented design, the STL, smart pointers, templates, and data structures — with practice at every step.

65 lessons0 challenges~28 hoursBeginner — no experience needed

Prerequisite course:C++ Beginner

Who this course is for

Learners who finished C++ — Beginner and want to design real C++ programs: classes with clean ownership, the STL used fluently, templates, and data structures built from scratch.

What you will be able to do

  • Reason about memory: references, pointers, dynamic allocation, lifetime, and const correctness
  • Design classes with proper constructors, destructors, and encapsulation
  • Use inheritance, virtual functions, and polymorphism — and know when composition is better
  • Overload operators and implement the Rule of Three/Five with copy and move semantics
  • Choose and use STL containers and algorithms fluently, including with lambdas
  • Apply modern C++: auto, constexpr, enum class, optional, variant, string_view
  • Manage resources with unique_ptr/shared_ptr/weak_ptr under RAII
  • Write and use function and class templates
  • Handle errors with exceptions and exception-safe design; read and write files
  • Implement core data structures (linked list, BST, hash table) and analyze complexity
  • Build a substantial console application combining all of these skills

Memory, Pointers & Lifetime

References vs pointers, dynamic allocation, const correctness, and the lifetime model that separates working C++ from crashing C++.

Object-Oriented Design

Classes as invariants: constructors, destructors, static members, this, and composition as the default structure.

Inheritance & Polymorphism

Public inheritance, virtual dispatch, abstract interfaces, and the virtual-destructor rule that keeps polymorphic cleanup safe.

Operators, Copy & Move

Overloading with honest semantics, then the Rule of Three/Five: deep copies, self-assignment, moves, and moved-from states.

STL Fundamentals

The standard library's core containers: sequence complexity, adapters, ordered vs unordered lookup, and the checklist for choosing between them.

Iterators and Algorithms

The algorithm vocabulary over begin/end: categories, find/count/sort, transform and accumulate, and lambda captures with correct lifetimes.

Modern C++

The modern toolkit: auto and deduction, constexpr and enum class, optional and variant, and the idioms that make C++ code safe by default.

Smart Pointers and RAII

Ownership made explicit: RAII foundations, unique_ptr as default, shared/weak mechanics, and a decision table for picking the model.

Templates

Generic programming: function and class templates, deduction and contracts, full and partial specialization, and a workflow for designing your own.

Error Handling and File I/O

Failure as a first-class citizen: the standard exception family, custom types with data, safety guarantees, and line-oriented content processing.

Data Structures and Algorithms

The thinking layer: Big-O literacy, binary search, recursion and list surgery, BSTs and graph traversal.

Intermediate Final Project

The capstone: architecture, integration, and a finishing checklist — assemble the whole course into one working library manager.