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` के बारे में सुना है, लेकिन समझ नहीं आता कि यह कैसे काम करता है और क्या अंतर है। कृपया समझाएँ कि यह क्या है।

अभी तक कोई उत्तर नहीं।

लॉग इन करें उत्तर देने के लिए

ब्लॉग