संकलक के आधार पर वर्चुअल विरासत को विभिन्न तरीकों से लागू किया गया है।
1) हां, वीसी और जीसीसी दोनों वीटीबल पॉइंटर का उपयोग करते हैं। लेकिन वीसी में वर्चुअल बेस पॉइंटर के रूप में एक और पॉइंटर रेफरी है।
2) शास्त्रीय वर्चुअल विरासत के लिए, जैसे बाएं < शीर्ष; दाएं < शीर्ष; नीचे < बाएं और दाएं ढेर इस तरह होना चाहिए:
Left.vptr // -> to its vtable
Left::element_in_left
Right.vptr
Right::element_in_right
Bottom::element_in_bottom
Top::element_in_top
कार्यक्रम vtable को खोजने के लिए, जीसीसी के लिए, वहाँ एक आभासी आधार व्यवहार्य में ऑफसेट मूल्य है vptr का उपयोग करें। vptr + बेस ऑफसेट माता-पिता का पता देगा।
3) मुझे यकीन नहीं है कि आपका क्या मतलब है। सी ++ कंपाइलर्स में इसे लागू करने के कई तरीके हैं। और अन्य भाषाओं में कार्यों को बांधने के उनके तरीके हैं।
कार्यान्वयन परिभाषित किया गया। – ildjarn
यह कार्यान्वयन निर्भर है, सख्त तकनीकी शर्तों में यह * निर्दिष्ट नहीं है *, सी ++ मानक केवल उस व्यवहार का वर्णन करता है जो वर्चुअल विरासत को पेश करता है लेकिन यह निर्दिष्ट नहीं करता कि इसे कैसे कार्यान्वित किया जाना चाहिए। इसे कार्यान्वयन के लिए एक विवरण के रूप में छोड़ दिया गया है & उन्हें इस विवरण को निर्दिष्ट करने की आवश्यकता नहीं है। कहा जाता है कि कंपेलरों के अधिकांश (* सभी ज्ञात * पढ़ें) वर्चुअल टेबल और पॉइंटर तंत्र का उपयोग करते हैं। –
उपरोक्त कहने के बाद, यह नहीं सोचें कि क्यू अप्रासंगिक है या असली क्यू नहीं है। सभी कंपाइलर एक समान तंत्र का उपयोग करते हैं और हालांकि कार्यान्वयन के विवरण को जानने के लिए इसकी आवश्यकता नहीं है, लेकिन इसे जानने में कोई दिक्कत नहीं होती है। इसके अलावा, इस क्यू को कई बार पूछा जाता है कि यह एक अच्छा सी ++ करेगा - अगर कोई समय निकालता है और इसे दृढ़तापूर्वक उत्तर देता है। –