Информация об изменениях

Сообщение Re[2]: Множественное наследование интерфейсов от 04.06.2018 14:11

Изменено 04.06.2018 19:12 AlexGin

Re[2]: Множественное наследование интерфейсов
Здравствуйте, Максим Рогожин, Вы писали:

МР>Здравствуйте, Максим Рогожин, Вы писали:


МР>Подскажите, пожалуйста, а есть ли минусы у такого дизайна?

МР>
МР>class SomeClass : public ConcreteClass, // класс
МР>                  public Interface1,    // интерфейс
МР>                  public Interface2,    // интерфейс
МР>                  ...
МР>                  public InterfaceN     // интерфейс
МР>{
МР>//...
МР>};
МР>


МР>И есть ли разница в каком порядке перечислены ConcreteClass, Interface1, ..., InterfaceN?

МР>
МР>// Так можно? Этот вариант чем-нибудь отличается от первого варианта?
МР>class SomeClass : public Interface1,    // интерфейс
МР>                  public ConcreteClass, // класс
МР>                  public Interface2,    // интерфейс
МР>                  ...
МР>                  public InterfaceN     // интерфейс
МР>{
МР>//...
МР>};
МР>


Разницы нет, это одно и то же.
Re[2]: Множественное наследование интерфейсов
Здравствуйте, Максим Рогожин, Вы писали:

МР>Здравствуйте, Максим Рогожин, Вы писали:


МР>Подскажите, пожалуйста, а есть ли минусы у такого дизайна?

МР>
МР>class SomeClass : public ConcreteClass, // класс
МР>                  public Interface1,    // интерфейс
МР>                  public Interface2,    // интерфейс
МР>                  ...
МР>                  public InterfaceN     // интерфейс
МР>{
МР>//...
МР>};
МР>


МР>И есть ли разница в каком порядке перечислены ConcreteClass, Interface1, ..., InterfaceN?

МР>
МР>// Так можно? Этот вариант чем-нибудь отличается от первого варианта?
МР>class SomeClass : public Interface1,    // интерфейс
МР>                  public ConcreteClass, // класс
МР>                  public Interface2,    // интерфейс
МР>                  ...
МР>                  public InterfaceN     // интерфейс
МР>{
МР>//...
МР>};
МР>


Разницы нет, это одно и то же.

P.S. Уточним — что под понитиями Interface1, Interface2, ... InterfaceN, подразумеваются именно
абстрактные базовые классы — не имеюшие какой-либо реализации:
http://qaru.site/questions/80587/abstract-class-vs-interface-in-c
http://natalia.appmat.ru/c&c++/lezione17.php

К сожалению, в стандарте C++ понятия "интерфейс" нет, мы просто условимся считать так, как указано выше.