FreeShort Course

Advanced C++ Programming

OOP & Architecture: inheritance, virtual dispatch and abstract interfaces, operator overloading and copy control (Rule of Three/Five), templates and STL algorithms with lambdas, and smart pointers with move semantics.

FreeNo fee
4 weeks12 hours
Short CourseBeginner to Intermediate
OnlineLive & instructor-led

About this course

OOP & Architecture: inheritance, virtual dispatch and abstract interfaces, operator overloading and copy control (Rule of Three/Five), templates and STL algorithms with lambdas, and smart pointers with move semantics.

This is a 6-week short course - enough depth to build real projects and a portfolio piece, without a long commitment. Learn online at your own pace. Practice the concepts with the listed assessments.

What's included

  • Self-paced lessons and practice (12 estimated hours).
  • Hands-on coding quests you solve inside the EchoLens browser compiler - nothing to install.
  • Gems, stages and a leaderboard that keep you moving instead of grade anxiety.
  • A verified certificate with a scannable QR code, ready to share on LinkedIn, when you satisfy the course requirements.
  • Completely free - no fee, just create an account and start.

What you will learn

Inheritance & protectedVirtual functions & vtablesAbstract classes & interfacesOperator overloading (+, ==, <<)Deep vs shallow copyRule of Three / FiveFunction templatesClass templatesSTL algorithms & lambdasstd::unique_ptrstd::shared_ptr & reference countingMove semantics & std::move

Course outline - level by level

12 leveles, each with hands-on quests you clear in the portal.

  • Level 1. Inheritance & protected - Real-life analogy: A basic vehicle blueprint contains wheels, engine, and steering. An electric sports car inherits all base traits but adds battery packs and turbo modes without rebuilding a vehicle from scratch. Inheritance enables a derived class to inherit member variables and methods from a base class (class Car : public Vehicle). The protected access specifier keeps members private from external client code while keeping them accessible to derived child classes.
  • Level 2. Virtual Functions & vtables - Real-life analogy: A universal remote control has a "Power" button. When pointed at a TV, it turns on the screen; when pointed at an air conditioner, it spins up the compressor. The remote doesn't know the exact machine model - it relies on the device's internal response. Declaring a base method as virtual enables dynamic dispatch (runtime polymorphism). The compiler generates a virtual method table (vtable) and assigns a virtual pointer (vptr) to each object. When calling a method via a base pointer (Shape* ptr), C++ resolves the derived object's override dynamically.
  • Level 3. Abstract Classes & Interfaces - Real-life analogy: An international standard for electrical wall plugs specifies exact pin dimensions and voltages. The standard itself cannot produce electricity - it is a pure contract that third-party manufacturers must implement. A class containing at least one pure virtual function (virtual void render() = 0;) is an Abstract Class. It cannot be instantiated directly and serves as a strict structural interface/contract. Derived classes must override all pure virtual methods to become concrete instantiable classes.
  • Level 4. Operator Overloading (+, ==, <<) - Real-life analogy: Adding two numbers (2 + 3 = 5) is basic arithmetic. Adding two time durations (2 hours + 45 minutes = 2h 45m) requires teaching the plus operator how to manipulate compound clock objects. C++ allows user-defined classes to redefine standard language operators by implementing operator+, operator==, or the stream insertion operator<<. This gives custom objects natural, mathematical syntax without awkward method names like p1.add(p2).
  • Level 5. Deep vs Shallow Copy - Real-life analogy: A Shallow Copy gives two housemates the same single front door key (if one changes the lock, the other is locked out). A Deep Copy builds an identical duplicate house with its own separate door lock and keys. Default memberwise copy constructors perform shallow copies: copying raw pointer addresses. If one object goes out of scope and frees the memory, the other object holds a broken dangling pointer (a double-free crash). A user-defined copy constructor allocates a fresh heap block and clones the data contents independently.
  • Level 6. Rule of Three / Five - Real-life analogy: If you sign a commercial lease for property, you must have clear contractual procedures for when you enter, when you sublease (copy), when you transfer ownership (move), and when you terminate the lease (destructor). If a class manages raw heap memory or system resources, it must explicitly define the Rule of Five: Destructor, Copy Constructor, Copy Assignment Operator, Move Constructor, and Move Assignment Operator. This prevents memory leaks, dangling pointers, and shallow double-frees.
  • Level 7. Function Templates - Real-life analogy: Think of a cookie cutter mold. The cutter does not care whether you punch out gingerbread dough, chocolate dough, or clay - the structural star shape remains identical regardless of the material. Templates enable generic programming without duplicating identical logic for different data types. Declaring template <typename T> instructs the compiler to generate type-specific functions at compile-time when called with int, double, or custom objects, ensuring zero runtime performance penalty.
  • Level 8. Class Templates - Real-life analogy: A shipping freight container has standard locks and crane attachment hooks. It works identically whether it is loaded with cars, electronics, or grain. The container structure is type-agnostic. A class template parameterized by template <class T> allows entire data structures (like Stacks, Queues, and Matrices) to hold any arbitrary payload. The compiler stamps out a concrete class implementation for each instantiation (such as Box<int> or Box<std::string>).
  • Level 9. STL Algorithms & Lambdas - Real-life analogy: Instead of writing custom sorting steps for a deck of cards from scratch, you hand the deck to an automated card sorter along with a rule card: "Sort from Lowest to Highest." The Standard Template Library provides high-performance algorithms (std::sort, std::find_if, std::accumulate) in <algorithm>. Anonymous inline lambda functions [captures](params) { body } pass custom predicate logic directly into STL algorithms without defining separate helper functions.
  • Level 10. std::unique_ptr - Real-life analogy: Think of a physical airplane ticket with an assigned seat number. Only one passenger can hold that unique ticket at a time. If you give the ticket to another person, you surrender your own possession completely (move semantics). std::unique_ptr<T> is a scoped smart pointer that owns and manages a heap object exclusively. It cannot be copied, preventing multiple-pointer ownership bugs. When the unique pointer goes out of scope, it calls delete automatically, eliminating manual memory leaks.
  • Level 11. std::shared_ptr & Reference Counting - Real-life analogy: Think of an office room light wired to a smart occupancy sensor. Every person who enters increments the occupant count by 1. When a person leaves, the count drops. The light turns off only when the last person exits (count = 0). std::shared_ptr<T> maintains a thread-safe reference control block. Multiple shared pointers can point to the same heap resource. Every copy increments the reference count; when a pointer goes out of scope, the count decrements. When the counter hits zero, the managed object is destroyed.
  • Level 12. Move Semantics & std::move - Real-life analogy: Moving into a new apartment. Instead of making exact duplicate photocopies of 500 books in your library and throwing the originals away, you pick up the existing boxes of books and move them into the new room. Traditional copying duplicates expensive heap buffers. Modern C++ (C++11+) introduces Move Semantics with Rvalue References (T&&). Using std::move() casts an object into an rvalue, allowing the receiving object to steal its internal heap pointers in O(1) time, leaving the source object in a valid but empty state.

How you submit: Coding quests solved in the built-in EchoLens compiler.

Who it's for

Advanced C++ Programming suits learners at a beginner to intermediate level who want a practical, project-based route into Advanced C++ Programming. You need only a browser and an internet connection - all coding runs inside the EchoLens compiler, so there is nothing to set up.

Certificate

Pass every required assessment at its stated threshold to earn your verified certificate. Optional practice and watching videos do not determine eligibility. Anyone can scan its QR code to verify it on our site. You can add it to your CV or share it to LinkedIn in one click.

More Short Courses

Python for Data ScienceRs 12,500 · 6 weeksGenerative AI EssentialsRs 14,000 · 6 weeksData Analytics with SQL & Power BIRs 13,500 · 6 weeksIntroduction to Machine LearningRs 13,000 · 6 weeks