Чистый виртуальный метод в C++
У абстрактного метода нет своего тела. Он нужен, чтобы потомки обязательно написали свою реализацию.
В объявлении пишут virtual, после списка параметров
ставят = 0.
Тело метода в базовом классе не допускается. Запишем
абстрактный User с чистым методом увеличения дохода:
#include <string>
class User {
public:
virtual ~User() {}
std::string name;
User(std::string name) : name(name) {}
virtual void increaseRevenue(int value) = 0;
};
class Employee : public User {
public:
int salary;
Employee(std::string name, int salary)
: User(name), salary(salary) {}
void increaseRevenue(int value) override {
salary += value;
}
};
Создадим объект класса Employee и увеличим ему зарплату:
int main() {
Employee employee("john", 1000);
employee.increaseRevenue(100);
std::cout << employee.salary << "\n";
return 0;
}
Родитель не решает, что именно увеличивать у сотрудника или студента - он только фиксирует имя операции. Конкретная арифметика живет в классах-потомках.
Добавьте в ваш класс Figure чистые
виртуальные методы для площади и периметра
фигуры.