बहुत संकीर्ण अर्थों में, उत्तर "हां" है: यह मानते हुए कि आपके आधार वर्ग या इंटरफेस एक ही उद्देश्य के लिए डिज़ाइन किए गए हैं, दोनों को विरासत में लेने से कई जिम्मेदारियों के साथ एक वर्ग बनता है। हालाँकि, यह "बुरी बात" है या नहीं, यह उन वर्गों की प्रकृति पर निर्भर करता है या जिन्हें आप विरासत में दे रहे हैं।
आप अपनी कक्षाओं और इंटरफेस को दो प्रमुख समूहों में विभाजित कर सकते हैं - आपके सिस्टम की आवश्यक जटिलता को संबोधित करने वाले, और इसके आकस्मिक जटिलता को संबोधित करने वाले। यदि एक से अधिक "आवश्यक जटिलता" वर्गों से विरासत में मिली, तो यह खराब है; यदि आपको एक "आवश्यक" और एक या अधिक "आकस्मिक" वर्गों से विरासत में मिला है, तो यह ठीक है।
उदाहरण के लिए, बिलिंग प्रणाली में आपके पास चालान और बिलिंग चक्रों का प्रतिनिधित्व करने के लिए कक्षाएं हो सकती हैं (वे आवश्यक जटिलता को संबोधित करते हैं) और वस्तुओं को बनाए रखने के लिए कक्षाएं (वे आकस्मिक जटिलता को संबोधित करते हैं)। अगर आपको इस तरह की विरासत मिलती है
class BillingCycleInvoice : public BillingCycle, public Invoice {
};
यह बुरा है: आपकी BillingCycleInvoice
एक मिश्रित जिम्मेदारी है क्योंकि यह सिस्टम की आवश्यक जटिलता से संबंधित है।
दूसरी ओर, यदि आप इस तरह के वारिस हैं
class PersistentInvoice : public Invoice, public PersistentObject {
};
आपकी कक्षा ठीक है: तकनीकी रूप से, यह एक ही बार में दो चिंताओं की सेवा करता है, लेकिन चूंकि उनमें से केवल एक ही आवश्यक है, आप आकस्मिक को "व्यवसाय करने की लागत" के रूप में विरासत में लिख सकते हैं।