Используйте множественное наследование для представления нескольких различных интерфейсов
Причина
Не все классы обязательно поддерживают все интерфейсы, и не все вызывающие стороны обязательно хотят иметь дело со всеми операциями. Особенно для разбиения монолитных интерфейсов на «аспекты» поведения, поддерживаемые данным производным классом.
Пример
class iostream : public istream, public ostream { // очень упрощённо
// ...
};
istream предоставляет интерфейс для операций ввода; ostream предоставляет интерфейс для операций вывода. iostream предоставляет объединение интерфейсов istream и ostream и синхронизацию, необходимую для обеспечения обоих на одном потоке.
Примечание
Это очень распространённое использование наследования, поскольку потребность в нескольких различных интерфейсах к реализации является распространённой, а такие интерфейсы зачастую нелегко и неестественно организовать в иерархию с единственным корнем.
Примечание
Такие интерфейсы, как правило, являются абстрактными классами.
Контроль
???