Virtual functions — runtime polymorphism.
1class Shape {2public:3 virtual double area() const = 0; // pure virtual4 virtual ~Shape() = default;5};67class Circle : public Shape {8 double r;9public:10 double area() const override { return 3.14 * r * r; }11};
Vtable mechanism:
Cost:
When to use: