Topics
From C to C++: cin, cout, namespaces
Write a first C++ program and see what's new versus C.
References vs pointers
Use references as aliases and compare with pointers.
Function overloading and default arguments
Write functions with the same name and different parameters.
std::string
Use C++ strings instead of char arrays.
Classes and objects
Define classes with data and member functions.
Constructors and destructors
Initialise and clean up objects automatically.
Encapsulation and access specifiers
Use private, public and protected.
this pointer and static members
Know this and class-wide static data.
Copy constructor: shallow vs deep copy
See why copying pointers can share memory.
Inheritance
Derive classes and understand types of inheritance.
Virtual functions and runtime polymorphism
Understand virtual dispatch and the vtable.
Abstract classes and pure virtual functions
Define interfaces with pure virtual functions.
Operator overloading
Make + and << work for your own types.
Dynamic memory: new and delete
Allocate objects on the heap and avoid leaks.
Smart pointers: unique_ptr, shared_ptr
Let RAII manage memory automatically.
Templates
Write generic functions and classes.
STL vector
Use dynamic arrays with push_back, size and iteration.
STL map, set, unordered_map
Store sorted/unique keys and fast lookups.
STL algorithms: sort, find, lower_bound
Use ready-made algorithms on containers.
Iterators
Traverse any container the same way.
Exception handling
Use try, throw and catch.
Lambdas and modern C++
Write inline functions with captures; use auto and range-for.
Project: library management
Combine classes, inheritance and STL.