Я не могу понять этот модификатор доступа

Я новичок в C ++. И у меня сегодня тест по программированию. Но я не могу понять эти примеры.

class A
{
public:
int w;
};

class B : public A
{
public:
int x;
};

class C : private A
{
public: int y;
};

class D : protected B
{
public: int z;
};

int main()
{
D d;
d.w = 10; // compile error
}

Я думал (D d; d.w = 10) правильно, но есть ошибка компиляции.

D получено от B (защищено), а B получено от A (публично).
Итак, я думаю, что D может получить доступ к члену класса А, потому что

Класс Б: публичный А
{public: int x}
==>
Класс б
{public: int w; int x;}

и класс D: защищенный B
{public: int z}
==>
класс D
{public: int z; защищенный: int w, int x;}

Почему я не прав ?? Спасибо!

4

Решение

D можно увидеть членов A а также B, но из-за protected только наследство D и классы, полученные из D знать, что D это B и может получить доступ B а также A члены. main не является производным от D, так main не знает о Dнаследство B и, следовательно, не может получить доступ к унаследованному A а также B члены.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector