Вызов метода базового класса в C++
После замены тело метода родителя само не выполняется. Его можно вызвать из потомка.
Внутри метода потомка пишут имя базы, два двоеточия и имя
метода, например User::setAge.
Запишем верхнюю границу возраста в Employee и передадим
остальное базе:
#include <iostream>
class User {
public:
virtual void setAge(int age) {
if (age >= 0) {
this->age = age;
} else {
std::cout << "need age more 0\n";
}
}
int getAge() {
return age;
}
protected:
int age = 0;
};
class Employee : public User {
public:
void setAge(int age) override {
if (age <= 120) {
User::setAge(age);
} else {
std::cout << "need age less 120\n";
}
}
};
Создадим объект класса Employee и запишем ему возраст:
int main() {
Employee employee;
employee.setAge(30);
std::cout << employee.getAge() << "\n";
return 0;
}
Дан следующий код:
class User {
public:
virtual void setAge(int age) {
if (age >= 0) {
this->age = age;
}
}
protected:
int age = 0;
};
class Employee : public User {
public:
void setAge(int age) override {
if (age <= 120) {
if (age >= 0) {
this->age = age;
}
}
}
};
Упростите сеттер возраста в Employee,
используя вызов метода базового класса
User::setAge для проверки
неотрицательного возраста.