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.