Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpOpIhHd 64 of 150 menu
◀ ▶

Сокрытие метода в C++

Если в потомке объявить метод с тем же именем, что у базы, метод базы не исчезает.

Компилятор смотрит на тип переменной, а не на то, какой объект в ней лежит. Переменная типа User вызовет greet из User, даже если объект создан как Student. Запишем оба метода и выведем результат для ссылки типа User и для Student:

#include <iostream> class User { public: void greet() { std::cout << "user\n"; } }; class Student : public User { public: void greet() { std::cout << "student\n"; } };

Создадим объект Student и вызовем метод через ссылку на базу:

int main() { Student student; User& link = student; link.greet(); student.greet(); return 0; }

Сделайте классы User и Employee с методом role, который выводит разные строки. Сохраните объект Employee в ссылке типа User и выведите, какая версия метода вызывается.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить