Страницы

Поиск по вопросам

четверг, 29 ноября 2018 г.

В C++ при наследовании определяется доступность только открытых элементов родителя?

Прочитав несколько статей по этому поводу не могу сказать, что точно все понял. Такая конструкция
class Child : private Parent ...
сделает все публичные элементы родителя приватными у наследника? И так же, если там указать public или protected, то это влияет только на публичные родительские элементы или нет?


Ответ

private (закрытый, внутренний член класса) — обращения к члену допускаются только из методов того класса, в котором этот член определён. Любые наследники класса уже не смогут получить доступ к этому члену. Наследование по типу private делает все члены родительского класса (в том числе public и protected) private-членами класса-наследника (С++) protected (защищённый, внутренний член иерархии классов) — обращения к члену допускаются из методов того класса, в котором этот член определён, а также из любых методов его классов-наследников. Наследование по типу protected делает все public-члены родительского класса protected-членами класса-наследника (С++) public (открытый член класса) — обращения к члену допускаются из любого кода. Наследование по типу public не меняет модификаторов родительского класса (С++)

Таким образом, ответ на ваш вопрос: class Child : private Parent - да, такое наследование сделает все публичные элементы родителя приватными у наследника.

Комментариев нет:

Отправить комментарий