A = new MyClass();
{...do something in the meantime...}
A = NULL;
जिस तरह से मैं इसका ट्रैक रखता हूं वह यह है कि दो अलग-अलग वस्तुएं हैं। ढेर पर कहीं, MyClass
उदाहरण new
द्वारा आवंटित किया गया है। और ढेर पर, A
नामक एक सूचक है।
A
सिर्फ एक सूचक है, बाहर जादुई कुछ भी नहीं है, और इसमें ढेर-आवंटित MyClass
ऑब्जेक्ट के लिए कुछ विशेष कनेक्शन नहीं है। यह अभी उस बिंदु को इंगित करता है, लेकिन यह बदल सकता है।
और आखिरी पंक्ति पर, यह वही होता है जो वास्तव में होता है। आप पॉइंटर को किसी अन्य चीज़ पर इंगित करने के लिए बदलते हैं। यह अन्य वस्तुओं को प्रभावित नहीं करता है। यह उस ऑब्जेक्ट को प्रभावित नहीं करता है जिसका उपयोग यह इंगित करने के लिए किया जाता है, और यह ऑब्जेक्ट को प्रभावित नहीं करता है (यदि कोई है) कि यह अब इंगित करने के लिए सेट है। दोबारा, A
किसी अन्य की तरह सिर्फ एक गूंगा कच्चा सूचक है। यह नल हो सकता है, या यह ढेर पर किसी ऑब्जेक्ट को इंगित कर सकता है, या यह ढेर पर किसी ऑब्जेक्ट को इंगित कर सकता है, या यह अनियमित हो सकता है और यादृच्छिक कचरा इंगित कर सकता है। लेकिन यह सब कुछ करता है। यह इंगित करता है, यह किसी भी तरह से ऑब्जेक्ट को इंगित करने या संशोधित करने के लिए किसी भी तरह से स्वामित्व नहीं लेता है।
कोई विचार नहीं कि यह क्यों कम किया गया था। यह पूरी तरह से शब्द नहीं है, लेकिन निश्चित रूप से एक वैध जवाब है। मेरी इच्छा है कि इस तरह के संदेहों से अधिक नए लोगों पर हमला किया गया और उन्होंने इस तरह के दोषों के साथ कोड छोड़ दिया। – sharptooth
@ शार्पतोथ: सहमत हुए। यह हमारे लिए गहराई से पुराने सी/सी ++ देवों के लिए एक साधारण सवाल प्रतीत हो सकता है, लेकिन प्रोग्रामिंग के लिए नए, या गैर-जीसी भाषाओं के लिए यह एक बिल्कुल वैध सवाल है। – philsquared
"... यह ढेर पर रहेगा ...": नया ढेर पर स्मृति आवंटित नहीं करता है। आपका पॉइंटर ढेर पर है, लेकिन ऑब्जेक्ट स्वयं नहीं है। यह ढेर पर आवंटित किया जाता है। – Lucas