क्या thisकिसी विशेष वस्तु के जीवनकाल के दौरान पॉइंटर का मूल्य स्थिर रहने की गारंटी है?
जी हां ।
जैसा कि उपयोगकर्ता Aconcagua इसे कहते हैं: thisसूचक का मान हमेशा उस वस्तु के पते का मूल्य होता है जिस पर फ़ंक्शन को 1 पर बुलाया गया था । तो सवाल इसके बराबर है:
क्या कोई वस्तु जीवन काल में अपना मेमोरी पता बदल सकती है?
lifetime2 की परिभाषा के अनुसार, यह संभव नहीं है । किसी वस्तु का जीवनकाल तब शुरू होता है जब उसका भंडारण प्राप्त किया जाता है या उसके बाद समाप्त होता है और जब वह छोड़ा जाता है, उससे पहले।
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पॉइंटर का मान हमेशा उस ऑब्जेक्ट के पते का मूल्य होता है जिस पर फ़ंक्शन को बुलाया गया था। तो यह सवाल बराबर है कि 'क्या कोई वस्तु जीवन काल में अपना मेमोरी एड्रेस बदल सकती है?'