Ответ
Чисто виртуальный метод (pure virtual method) — это метод, объявленный в базовом классе с синтаксисом = 0, который не имеет реализации в этом классе. Его цель — определить интерфейс, который обязаны реализовать все производные классы.
class Shape { // Абстрактный базовый класс
public:
// Чисто виртуальный метод - интерфейс для вычисления площади
virtual double area() const = 0;
// Виртуальный деструктор - обязателен для полиморфных базовых классов
virtual ~Shape() = default;
};
class Circle : public Shape {
double radius;
public:
Circle(double r) : radius(r) {}
// Обязательная реализация чисто виртуального метода
double area() const override {
return 3.14159 * radius * radius;
}
};
Ключевые моменты:
- Класс, содержащий хотя бы один чисто виртуальный метод, становится абстрактным классом.
- Нельзя создать экземпляр абстрактного класса:
Shape s; // Ошибка компиляции. - Производный класс должен переопределить (override) все чисто виртуальные методы, иначе он также останется абстрактным.
- Чисто виртуальные методы позволяют создавать полиморфные интерфейсы и обеспечивают контракт для наследников.