У дуже вузькому сенсі відповідь - "Так": якщо припустити, що ваші базові класи або інтерфейси розроблені з єдиною метою, успадковування обох створює клас з численними обов'язками. Однак, чи це "погано", залежить від характеру класів чи інтерфейсів, які ви успадковуєте.
Ви можете розділити свої класи та інтерфейси на дві основні групи - ті, що стосуються суттєвої складності вашої системи, і ті, що стосуються її випадкової складності. Якщо успадковувати з декількох класів «суттєвої складності», це погано; якщо ви успадковуєте один з "основних" і один або більше "випадкових" класів, це нормально.
Наприклад, у платіжній системі у вас можуть бути класи для представлення рахунків та циклів виставлення рахунків (вони відповідають суттєвій складності) та класи для об'єктів, що зберігаються (вони стосуються випадкової складності). Якщо ти спадкуєш так
class BillingCycleInvoice : public BillingCycle, public Invoice {
};
це погано: ваша BillingCycleInvoice
відповідальність є неоднозначною, оскільки це стосується суттєвої складності системи.
З іншого боку, якщо ти наслідуєш так
class PersistentInvoice : public Invoice, public PersistentObject {
};
з вашим класом все нормально: технічно він забезпечує одразу дві проблеми, але оскільки лише одна з них є важливою, ви можете списати на спадщину випадковий як "вартість ведення бізнесу".