Использование “Общественности” в объявлении производного класса?

Может быть, это может помочь:

http://vimdoc.sourceforge.net/htmldoc/windows.html

24
задан 14 October 2009 в 01:05
поделиться

3 ответа

По умолчанию используется частное наследование. возьмем следующий пример:

class B { };
class D: B { };

использует частное наследование по умолчанию. Это означает, что D получает все защищенные и общедоступные поля и методы, которые есть у B (если мы действительно объявили какие-либо), но не может быть преобразован в B. Следовательно, этот код не работает:

void foo(B* argument) {}
foo(new D);                   //not allowed

Если D публично унаследован от B, тогда D может быть преобразован в B, и этот вызов функции будет нормальным.

Второе отличие состоит в том, что все защищенные и открытые члены в B становятся частными членами в D.

What это на самом деле означает? Открытое наследование означает D IS_A B, но частное наследование означает «реализовано в терминах». Наследование D от B означает, что вы хотите воспользоваться преимуществами некоторых функций в B, но не потому, что D IS_A B или потому что существует какая-то концептуальная связь между B и D.: D

39
ответ дан 28 November 2019 в 23:34
поделиться

В C ++ по умолчанию наследование является частным. Однако для любого кода, использующего класс Manager, почти нет разницы, поскольку они имеют одинаковые методы.

Однако вы не сможете преобразовать объект Manager в Employee. Вы также не сможете получить доступ к переменной employee из класса Manager.

0
ответ дан 28 November 2019 в 23:34
поделиться

Без этого «общедоступный» «Сотрудник» стал бы частным базовым классом «Менеджер».

Классы, объявленные с ключевым словом 'class', по умолчанию имеют свои члены закрытыми, а их базовые классы - закрытыми по умолчанию.

Классы, объявленные с ключевым словом 'struct', по умолчанию имеют свои члены общедоступными, а их базовые классы открыты по умолчанию.

3
ответ дан 28 November 2019 в 23:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: