Multiple inheritance হলো একটি বৈশিষ্ট্য যা C++-এ একটি ক্লাসকে একাধিক বেস ক্লাস থেকে প্রোপার্টি এবং আচরণ গ্রহণ করার সুযোগ দেয়। এর মাধ্যমে একটি ডেরাইভড ক্লাস একাধিক বেস ক্লাসের সদস্য অ্যাক্সেস করতে পারে।
উদাহরণ:
class Animal {
public:
void eat() {
cout << "Animal is eating" << endl;
}
};
class Bird {
public:
void fly() {
cout << "Bird is flying" << endl;
}
};
class Sparrow : public Animal, public Bird {
public:
void sound() {
cout << "Sparrow is chirping" << endl;
}
};
int main() {
Sparrow s;
s.eat(); // Animal থেকে ইনহেরিট করা
s.fly(); // Bird থেকে ইনহেরিট করা
s.sound(); // নিজস্ব ফাংশন
return 0;
}
</pre>
ডায়মন্ড প্রোবলেম:
C++-এ ডায়মন্ড প্রোবলেম ঘটে যখন একটি ক্লাস দুটি ক্লাস থেকে ইনহেরিট করে, এবং উভয় ক্লাসের একটি সাধারণ বেস ক্লাস থাকে, ফলে অস্পষ্টতা সৃষ্টি হয়। এটি ভার্চুয়াল ইনহেরিটেন্স ব্যবহার করে সমাধান করা যায়।
class A {
public:
void show() {
cout << "Class A" << endl;
}
};
class B : public A {
public:
void show() {
cout << "Class B" << endl;
}
};
class C : public A {
public:
void show() {
cout << "Class C" << endl;
}
};
class D : public B, public C {
public:
void show() {
cout << "Class D" << endl;
}
};
int main() {
D obj;
obj.show(); // কোন show() ফাংশন কল হবে?
return 0;
}
</pre>
ডায়মন্ড প্রোবলেম সমাধানে ভার্চুয়াল ইনহেরিটেন্স:
class A {
public:
void show() {
cout << "Class A" << endl;
}
};
class B : virtual public A {
public:
void show() {
cout << "Class B" << endl;
}
};
class C : virtual public A {
public:
void show() {
cout << "Class C" << endl;
}
};
class D : public B, public C {
public:
void show() {
cout << "Class D" << endl;
}
};
int main() {
D obj;
obj.show(); // Class D কল হবে
return 0;
}
</pre>