मैं उलझन में हूं कि अगर एक कंस्ट्रक्टर को बेस क्लास से विरासत में मिला है तो क्या समस्याएं हो सकती हैं। Cpp प्राइमर प्लस का कहना है,
कंस्ट्रक्टर अन्य श्रेणी के तरीकों से भिन्न होते हैं, जिसमें वे नई वस्तुओं का निर्माण करते हैं, जबकि अन्य तरीकों को मौजूदा वस्तुओं द्वारा लागू किया जाता है । यह एक कारण है कि कंस्ट्रक्टरों को विरासत में नहीं मिला है । वंशानुक्रम का अर्थ है एक व्युत्पन्न वस्तु एक बेस-क्लास विधि का उपयोग कर सकती है, लेकिन, कंस्ट्रक्टरों के मामले में, ऑब्जेक्ट तब तक मौजूद नहीं होता है जब तक कि कंस्ट्रक्टर ने अपना काम नहीं किया है।
मैं समझता हूं कि ऑब्जेक्ट का निर्माण पूरा होने से पहले कंस्ट्रक्टर को बुलाया जाता है।
यदि बच्चा वर्ग विरासत में मिला है (तो इसका मतलब है कि बच्चे की कक्षा अभिभावक वर्ग विधि आदि को ओवरराइड करने में सक्षम है, अभिभावक वर्ग विधि तक नहीं पहुंच पा रहे हैं )
मैं समझता हूं कि एक कोड के भीतर एक स्पष्ट रूप से एक रचनाकार को कॉल करने की कोई आवश्यकता नहीं है [ऐसा नहीं है कि मुझे अभी तक पता है] वस्तुओं को बनाते समय छोड़कर। फिर भी आप कुछ तंत्र का उपयोग करके माता-पिता की कमी को रोकने के लिए उपयोग कर सकते हैं [सीपीपी में, उपयोग ::
या उपयोग करते हुए member initialiser list
, जावा का उपयोग करते हुए super
]। जावा में इसे 1 पंक्ति में कॉल करने के लिए एक प्रवर्तन है, मैं समझता हूं कि यह सुनिश्चित करना है कि माता-पिता की वस्तु पहले बनाई गई है और फिर बाल वस्तु निर्माण आय।
यह इसे ओवरराइड कर सकता है। लेकिन, मैं उन स्थितियों के साथ नहीं आ सकता, जहां यह एक समस्या पैदा कर सकता है। यदि बच्चा मूल निर्माणकर्ता को विरासत में देता है तो क्या गलत हो सकता है?
तो यह सिर्फ आवश्यक कार्यों को विरासत में प्राप्त करने से दूर रखने के लिए है। या इसका कोई आगे का हिस्सा है?