यह एक त्रुटि के रूप में चिह्नित नहीं किया जा रहा है क्योंकि यह कोई त्रुटि नहीं है। ऐसा कुछ भी नहीं है जो कहता है कि आपके पास व्युत्पन्न कक्षा में सदस्य नहीं हो सकते हैं जिन्हें बेस क्लास के सदस्यों के समान नाम दिया गया है।
आप प्रकार Derived
का एक उद्देश्य obj
है, तो obj.m_Pants
Derived
में m_Pants
को दर्शाता है। यदि आप मूल सदस्य को संदर्भित करना चाहते हैं, तो आप obj.Base::m_Pants
का उपयोग करके ऐसा कर सकते हैं।
आप Base
के एक सदस्य समारोह में हैं या एक Base*
उस प्रकार Derived
की एक वस्तु की ओर इशारा करता है, तो m_Pants
हमेशा की तरह, Base
के सदस्य को संदर्भित करता है वर्ग Derived
और का ज्ञान नहीं है उन संदर्भों में है क्योंकि इसके सदस्य हैं।
अच्छा, यह कोड त्रुटि नहीं है; यह लगभग निश्चित रूप से एक डिजाइन त्रुटि है।
स्रोत
2010-05-05 01:00:11
कार्यों को ओवरलोड और ओवरराइड किया जा सकता है। सदस्य नहीं कर सकते 'व्युत्पन्न :: m_pants' और 'बेस :: m_pants' पूरी तरह से दो अलग-अलग चर हैं। यदि आप 'std :: cout << sizeof (base) << '' << sizeof (व्युत्पन्न) << std :: endl; 'एक छोटे परीक्षण कार्यक्रम में, आप देखेंगे कि' व्युत्पन्न 'आकार में बड़ा है 'Base'। आप वेरिएबल्स को उसी नाम और प्रकार का उपयोग भी कर सकते हैं, लेकिन वे अभी भी अलग-अलग चर हैं क्योंकि वे विभिन्न वर्गों से संबंधित हैं। – Dustin
आह, आपने "ओवरराइड" से "छाया" तक उपयोग की गई शब्द को बदल दिया, इस प्रकार मेरी टिप्पणी को अमान्य कर दिया। इसे ठीक करने के लिए धन्यवाद। :) – Dustin
@ डस्टिन, मेरी शब्दावली में सुधार के लिए धन्यवाद। –