C++ для начинающих private, public, protected как модификаторы для наследования

После изучения модификаторов доступа внутри класса и простого наследования нужно понять принципы модификаторов доступа при наследовании. Многим людям легко запутаться что где есть. Чтобы как-то рассредоточить эту кашу, проще сначала понять что это за модификаторы доступа такие C++ для начинающих private, public, protected, а потом перейти к изучению модификаторов доступа при наследовании.

Для начала таблица

Public наследование Private наследование Protected наследование
Class A
{
private: int x;
public: int y;
protected: int z;
};
Class A
{
private: int x;
public: int y;
protected: int z;
};
Class A
{
private: int x;
public: int y;
protected: int z;
};
Class B
{
private: int x;
public: int y;
protected: int z;};
Class B
{
private: int x;
private: int y;
private: int z;
};
Class B
{
private: int x;
protected: int y;
protected: int z;
};
Class C
{
private: int x;
public: int y;
protected: int z;
};
Class C
{
private: int x;
private: int y;
private: int z;
};
Class C
{
private: int x;
protected: int y;
protected: int z;
};

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   При наследовании public в класс-потомок передаются все поля в таком виде в котором они записаны в родителе. private поле тоже туда передается, но как я писал в статье C++ для начинающих Знакомство с protected (модификатор доступа внутри класса) , передается, но напрямую наследник ничего с ней сделать не может

Код C++ public наследование:

   Таким образом, используя public наследование мы передаем потомкам всё что есть в основном классе в таком виде, как и записано в основном классе. Получаем клон основного класса. Разница в том что элементы основного класса к элементам своего клона отношения не имеют

Код C++ private Наследование

   Таким образом, используя private наследование можно создать первого потомка от которого дальнейшее наследование будет бессмысленно. Если первый потомок получает возможность работы с некоторыми элементами, переданными по механизму наследования, то потомки первого потомка таких возможностей не получают. Кроме того, потомки первого потомка даже лишены возможности узнавать кто их первый родитель. Предполагается, что потомки класса B не должны даже знать о существовании класса A (либо потомков класса B вообще не должно быть). (примечание: Под первым потомком подразумевается потомок первого уровня. Таких потомков может быть сколько угодно)

Код C++ protected наследование


   Таким образом, используя protected наследование, программист предполагает, что внутри всех потомков и потомков потомков и потомков потомков потомков будут использоваться только такие элементы, передаваемые механизмом наследования, которые будут защищены от внешнего воздействия извне своих классов.
Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

7 комментариев: C++ для начинающих private, public, protected как модификаторы для наследования

  • Peter Blood говорит:

    Очень хорошая статья. Автору большое спасибо

  • Александр говорит:

    Спасибо.
    Ссылку поправь на «Знакомство с protected (модификатор доступа внутри класса)»

  • Anonim говорит:

    Сижу разбираюсь в этой теме, смутила фраза «Нельзя обратиться к private элементу унаследованному от родителя».
    Пришёл к выводу, что можно, если обратиться к нему через унаследованную аксессорную функцию 🙂

    • admin говорит:

      Давайте пример, что ли. Пример -то понагляднее будет чем выбрасывание терминов типа: «аксессорные функции»

      • Anonim говорит:

        Ну как-то так:

        На экране будет:
        i=777
        j=666

        • admin говорит:

          я исправлю в этих записях, что напрямую нельзя. Моя неточность.
          что еще заметите, пишите. Спасибо.

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     

Случайная книга в электронном формате

Яндекс.Метрика
НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Демотиватор эфолюция человека

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок