Могут ли два класса наследовать друг от друга одновременно? - PullRequest
2 голосов
/ 07 мая 2020

Сегодня у меня нет проблем с кодированием, но мне нужна помощь в объяснении концепции, на которую я изо всех сил пытаюсь найти ответы. Возникает вопрос:

Можете ли вы одновременно наследовать класс X от класса Y и класс Y от класса X? Объясните, используя код.

1 Ответ

5 голосов
/ 07 мая 2020

В комментарии уже было сказано: (publi c) модели наследования - это отношения.

Забудьте на мгновение о C ++ и рассмотрите абстрактную концепцию наследования и то, что он моделирует. Если A наследуется от B, то любой экземпляр A будет B. Следовательно, набор всех экземпляров A является подмножеством всех экземпляров B. Если все экземпляры A являются экземплярами B, а все экземпляры B являются экземплярами A, то для моделирования отношения между A и B не требуется наследование, поскольку они являются точными того же типа.

Теперь снова C ++. Это:

 struct A : B {};
 struct B : A {};

Невозможно по двум причинам. Во-первых, чтобы сделать A наследовать от B, необходимо знать определение B, а чтобы B наследовать от A, необходимо знать определение A. Во-вторых, каждый экземпляр A содержит подобъект типа B, а каждый B содержит подобъект типа A и каждый A .... до бесконечности. Это невозможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...