Avatar ·

C++ में वर्चुअल बेस क्लास क्या है और मल्टीपल इनहेरिटेंस में इसकी आवश्यकता क्यों है?

सभी को नमस्कार! मैंने हाल ही में C++ सीखना शुरू किया है और मल्टीपल इनहेरिटेंस का उपयोग करते समय एक समस्या का सामना किया। मेरे पास एक बेस क्लास `Animal` है, जिससे `Bird` और `Mammal` इनहेरिट होते हैं। फिर मैं एक क्लास `Bat` बनाना चाहता हूँ, जो `Bird` और `Mammal` दोनों से इनहेरिट हो। लेकिन जब मैं `Animal` में परिभाषित `speak()` मेथड को कॉल करने का प्रयास करता हूँ, तो कंपाइलर एम्बिग्युटी एरर देता है। यहाँ कोड का उदाहरण है:\n\n```cpp\nclass Animal {\npublic:\n void speak() { cout << "Animal sound"; }\n};\n\nclass Bird : public Animal {};\nclass Mammal : public Animal {};\nclass Bat : public Bird, Mammal {};\n```\n\n`Bat` का ऑब्जेक्ट बनाकर `bat.speak()` कॉल करने पर एरर आता है। मैंने बेस क्लासेस के लिए `virtual` के बारे में सुना है, लेकिन समझ नहीं आता कि यह कैसे काम करता है और क्या अंतर है। कृपया समझाएँ कि क्या...