मान लीजिए मैं:क्या मुझे उम्मीद है कि एकल विरासत में अपवाद और डाउनकास्ट सूचक को समायोजित नहीं करते हैं?
class Base {
public:
virtual void Nothing() {}
};
class MiddleDerived : public Base {
virtual void Nothing() {}
};
class Derived : public MiddleDerived {
virtual void Nothing() {}
};
और मेरे कोड इस प्रकार है:
Derived* object = new Derived();
Base* base = object; //implicit conversion here
void* derivedVoid = object;
void* baseVoid = base;
मुझे लगता है कि baseVoid == derivedVoid
आशा करनी चाहिए?
मुझे पता है कि अधिकांश कार्यान्वयन इस तरह से काम करते हैं लेकिन क्या इसकी गारंटी है?
"पोर्टेबिलिटी" के लिए "भाषा वकील" को प्रतिस्थापित करने पर विचार करें? – Bathsheba
जैसा कि आपने प्रश्न का उच्चारण किया है (उदाहरण के बजाए) आपने संभावना को खोल दिया है कि बेस क्लास में कोई वर्चुअल विधियां नहीं हो सकती हैं (जबकि कुछ व्युत्पन्न कक्षाएं होती हैं)। यह अभी भी "एकल विरासत" हो सकता है लेकिन पॉइंटर्स ** ** बराबर नहीं होंगे। आपके ** उदाहरण ** के लिए, मैं अपने विश्वास का समर्थन करने के लिए पर्याप्त पर्याप्त भाषा वकील नहीं हूं कि यह केवल सामान्य अभ्यास में सत्य है, मानक द्वारा वादा नहीं किया गया है। – JSF
मुझे लगता है कि यह काम करना चाहिए लेकिन मुझे नहीं लगता कि गैर पीओडी कक्षाओं के लिए मानक लेआउट है। – NathanOliver