Здравствуйте, Максим Рогожин, Вы писали:
МР>Здравствуйте, Максим Рогожин, Вы писали:
МР>Подскажите, пожалуйста, а есть ли минусы у такого дизайна?
МР>МР>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++ понятия "интерфейс" нет, мы просто условимся считать так, как указано выше.