एकाधिक वंशानुक्रम तब होता है जब एक वर्ग एक से अधिक आधार वर्ग से विरासत में मिलता है। तो वर्ग एकाधिक वंशानुक्रम का उपयोग करके कई आधार वर्गों से सुविधाओं को प्राप्त कर सकता है। यह ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज जैसे C++ की एक महत्वपूर्ण विशेषता है।
एक आरेख जो एकाधिक वंशानुक्रम प्रदर्शित करता है, नीचे दिया गया है -
C++ में मल्टीपल इनहेरिटेंस को लागू करने का प्रोग्राम इस प्रकार दिया गया है -
उदाहरण
#include <iostream> using namespace std; class A { public: int a = 5; A() { cout << "Constructor for class A" << endl; } }; class B { public: int b = 10; B() { cout << "Constructor for class B" << endl; } }; class C: public A, public B { public: int c = 20; C() { cout << "Constructor for class C" << endl; cout<<"Class C inherits from class A and class B" << endl; } }; int main() { C obj; cout<<"a = "<< obj.a <<endl; cout<<"b = "<< obj.b <<endl; cout<<"c = "<< obj.c <<endl; return 0; }
आउटपुट
उपरोक्त कार्यक्रम का आउटपुट इस प्रकार दिया गया है -
Constructor for class A Constructor for class B Constructor for class C Class C inherits from class A and class B a = 5 b = 10 c = 20
उपरोक्त कार्यक्रम में, कक्षा ए और बी को परिभाषित किया गया है। यह नीचे दिया गया है -
class A { public: int a = 5; A() { cout << "Constructor for class A" << endl; } }; class B { public: int b = 10; B() { cout << "Constructor for class B" < endl; } };
क्लास सी दोनों क्लास ए और बी से विरासत में मिला है। यह मल्टीपल इनहेरिटेंस का एक उदाहरण है। कक्षा सी की परिभाषा नीचे दिखाई गई है -
class C: public A, public B { public: int c = 20; C() { cout << "Constructor for class C" << endl; cout<<"Class C inherits from class A and class B" << endl; } };
मुख्य () फ़ंक्शन में, कक्षा C के ऑब्जेक्ट obj को परिभाषित किया गया है। कक्षा ए, बी और सी के निर्माणकर्ताओं को स्वचालित रूप से बुलाया जाता है और उनकी सामग्री प्रदर्शित होती है। फिर a, b और c के मान मुद्रित होते हैं। ये क्रमशः ए, बी और सी वर्ग के डेटा सदस्य हैं। इसके लिए कोड स्निपेट इस प्रकार है -
C obj; cout<<"a = "<< obj.a <<endl; cout<<"b = "<< obj.b <<endl; cout<<"c = "<< obj.c <<endl;