क्या this
किसी विशेष वस्तु के जीवनकाल के दौरान पॉइंटर का मूल्य स्थिर रहने की गारंटी है?
जी हां ।
जैसा कि उपयोगकर्ता Aconcagua इसे कहते हैं: this
सूचक का मान हमेशा उस वस्तु के पते का मूल्य होता है जिस पर फ़ंक्शन को 1 पर बुलाया गया था । तो सवाल इसके बराबर है:
क्या कोई वस्तु जीवन काल में अपना मेमोरी पता बदल सकती है?
lifetime
2 की परिभाषा के अनुसार, यह संभव नहीं है । किसी वस्तु का जीवनकाल तब शुरू होता है जब उसका भंडारण प्राप्त किया जाता है या उसके बाद समाप्त होता है और जब वह छोड़ा जाता है, उससे पहले।
1) [class.this]/1
एक गैर-स्थैतिक ( [class.mfct]
) सदस्य फ़ंक्शन के शरीर में , कीवर्ड this
एक प्रस्ताव है जिसका मूल्य उस ऑब्जेक्ट के लिए एक संकेतक है जिसके लिए फ़ंक्शन कहा जाता है।
2) [basic.life]/1
(जोर मेरा)
किसी वस्तु या संदर्भ का जीवनकाल वस्तु या संदर्भ का एक रनटाइम गुण है। एक वैरिएबल को यह कहा जाता है कि अगर यह डिफॉल्ट-इनिशियलाइज़्ड है और यदि यह क्लास टाइप या ए (संभवतः मल्टी-डायमेंशनल) एरे का है, तो क्लास टाइप में एक ट्रिवियल डिफॉल्ट कंस्ट्रक्टर होता है।
एक प्रकार की वस्तु का जीवनकाल T
तब शुरू होता है जब :
- प्रकार के लिए
T
उचित संरेखण और आकार के साथ भंडारण प्राप्त किया जाता है , और
- इसकी आरंभीकरण (यदि कोई है) पूर्ण है (रिक्त आरंभीकरण सहित) (
[dcl.init]
), सिवाय इसके कि यदि वस्तु एक संघ सदस्य है या उसके अधीन है, तो इसका जीवनकाल केवल तभी शुरू होता है जब संघ का सदस्य संघ में प्रारंभिक सदस्य ( [dcl.init.aggr]
, [class.base.init]
), या के रूप में हो में वर्णित है [class.union]
।
एक o
प्रकार की वस्तु का जीवनकाल T
तब समाप्त होता है जब :
- यदि
T
एक गैर-वर्ग प्रकार है, तो वस्तु नष्ट हो जाती है, या
- यदि
T
कोई वर्ग प्रकार है, तो विध्वंसक कॉल प्रारंभ होता है, या
- वह संग्रहण जो ऑब्जेक्ट पर कब्जा करता है , जारी किया जाता है , या किसी ऑब्जेक्ट द्वारा पुन: उपयोग किया जाता है जो भीतर निहित नहीं है
o
( [intro.object]
)।
this
पॉइंटर का मान हमेशा उस ऑब्जेक्ट के पते का मूल्य होता है जिस पर फ़ंक्शन को बुलाया गया था। तो यह सवाल बराबर है कि 'क्या कोई वस्तु जीवन काल में अपना मेमोरी एड्रेस बदल सकती है?'