Виртуальный метод в C++
Чтобы выбор метода зависел от реального объекта, базовую
версию помечают ключевым словом virtual.
Тогда вызов через указатель или ссылку на базовый тип
попадет в реализацию потомка, если объект им и создан.
Запишем виртуальный greet и выведем строку
через User*:
#include <iostream>
class User {
public:
virtual void greet() {
std::cout << "user\n";
}
};
class Student : public User {
public:
void greet() {
std::cout << "student\n";
}
};
Создадим объект Student и вызовем метод через указатель базы:
int main() {
Student student;
User* ptr = &student;
ptr->greet();
return 0;
}
Сделайте виртуальный метод label
в классе User и другую реализацию
в Employee. Вызовите метод через
указатель User* на объект сотрудника.