Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

С++. чем отличаются открытое и закрытое наследование?

Тайна Программирования Ученик (96), закрыт 10 лет назад
здравствуйте, представьте, имеется класс А, у него открытый метод ааа (), и имеется класс Б, который открытым способом наследует класс А, после создаются 2 объекта, один из А, другой из Б. ааа (объектА) /*(работает) */ ааа (объектБ) /*тоже работает*/ но если бы класс Б наследовал закрытым способом класс А то ааа (объектБ) не работало бы. возникает вопрос: для чего используют закрытое наследование? Здесь написано более подробнее:
http: //www. e-reading. link/chapter. php/1002058/99/Mayers_-_Effektivnoe_ispolzovanie_CPP.html
Лучший ответ
Димос Тцарев Гуру (3437) 10 лет назад
Закрытое наследование нужно для ограничения доступа к членам наследуемого класса, по
принципу наследования реализации. Конкретнее, например вам нужно разрешить доступ лишь к
части публичных методов базового класса через экземпляр наследника.

Да, принцип подстановки при наследовании, отличном от public, не выполняется.

В источнике читать с комментариями.
Остальные ответы
Федор Новиков Искусственный Интеллект (366066) 10 лет назад
Ни разу не приходилось делать закрытое наследование.
Возможно, чтобы использовать методы и поля базового класса, но не показывать их в новой реализации. Например, есть класс, определяющий поведение человека (ходит, ест, спит, работает) , потом понадобилось реализовать поведение кошки, но она не работает, поэтому используем закрытое наследование, а метод "работает" не используем и другим не даем.
PS извращение какое-то
Похожие вопросы