Введение в абстрактные классы в C++
Абстрактный класс в C++ называет действие, которое каждый конкретный потомок обязан реализовать по-своему.
Общий тип Shape описывает фигуру. Площадь
у разных фигур считают разными формулами. В базе
метод area не имеет тела: в конце объявления
пишут = 0. Такой метод называют чистым
виртуальным. Формулу пишет потомок. Запишем
Shape и Rectangle:
class Shape {
public:
virtual ~Shape() {}
virtual int area() const = 0;
};
class Rectangle : public Shape {
public:
int width;
int height;
Rectangle(int width, int height)
: width(width), height(height) {}
int area() const override {
return width * height;
}
};
Создадим объект класса Rectangle и выведем его площадь:
int main() {
Rectangle rect(4, 5);
std::cout << rect.area() << "\n";
return 0;
}
Объект создают у класса-потомка: он подставляет свою реализацию вместо чистого метода родителя. Базовый тип связывает разные фигуры одним именем метода и оставляет детали вычисления наследникам.