Çok dar anlamda, cevap "Evet" dir: temel sınıflarınızın veya arayüzlerinizin tek bir amaç için tasarlandığı varsayılarak, her ikisini de miras almak birden fazla sorumluluk içeren bir sınıf oluşturur. Ancak, "kötü bir şey" olup olmadığı, miras aldığınız sınıfların veya arayüzlerin doğasına bağlıdır.
Sınıflarınızı ve arayüzlerinizi, sisteminizin temel karmaşıklığına hitap eden ve kazara karmaşıklığını ele alan iki ana gruba ayırabilirsiniz. Birden fazla "temel karmaşıklık" sınıfından miras alınırsa, kötüdür; bir "temel" ve bir veya daha fazla "kazayla" sınıftan miras alırsanız, sorun olmaz.
Örneğin, bir faturalandırma sisteminde faturaları ve faturalandırma döngülerini temsil etmek için sınıflara (temel karmaşıklığı ele alırlar) ve kalıcı nesneler için sınıflara (yanlışlıkla karmaşıklığı ele alır) sahip olabilirsiniz. Eğer böyle miras alırsan
class BillingCycleInvoice : public BillingCycle, public Invoice {
};
bu kötü: BillingCycleInvoice
sistemin temel karmaşıklığıyla ilgili olduğu için karışık bir sorumluluğunuz var.
Öte yandan, eğer böyle miras alırsanız
class PersistentInvoice : public Invoice, public PersistentObject {
};
sınıfınız iyi durumda: teknik olarak, aynı anda iki kaygıya hizmet ediyor, ancak bunlardan sadece biri gerekli olduğundan, kazara olanı devralmayı "iş yapma maliyeti" olarak yazabilirsiniz.