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

Закрытое наследование в C++

Не каждое наследование должно быть публичным для всей программы.

При class SecretUser : private User публичные поля и методы базы становятся private у потомка. Снаружи их не вызвать, внутри методов SecretUser доступ остается. Запишем такую обертку:

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

Создадим объект класса SecretUser и вызовем его метод:

int main() { SecretUser user; user.sayHello(); return 0; }

Сделайте class Helper : private User и публичный метод, который внутри вызывает унаследованный greet. Убедитесь, что прямой вызов greet из main не компилируется.

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