Skip to content
AgileLogics
4 min read

Abstract Classes & Interfaces

Prerequisites: Polymorphism & virtual functions

A pure virtual function (= 0) has no implementation at all, making its class abstract — it can't be instantiated directly, only used as a base for concrete subclasses. C++ has no separate interface keyword; a class made entirely of pure virtual functions serves the same role.

class Shape {
public:
    virtual double area() const = 0; // pure virtual — no body
    virtual ~Shape() = default;
};

class Circle : public Shape {
private:
    double radius;

public:
    Circle(double r) : radius(r) {}

    double area() const override {
        return 3.14159 * radius * radius;
    }
};

Common mistakes

  • Trying Shape s; directly — a class with any pure virtual function can't be instantiated until every one of them is overridden.