मैं इस सवाल का जवाब पढ़ रहा था C ++ पेशेवरों और विपक्ष और टिप्पणियों को पढ़ते समय यह संदेह हो गया।
प्रोग्रामर अक्सर यह भ्रमित करते हैं कि "यह" एक पॉइंटर है, लेकिन एक संदर्भ नहीं है। एक और भ्रम यह है कि "हेलो" टाइप एसटीडी का क्यों नहीं है :: स्ट्रिंग लेकिन एक चार कांस्टेंस का मूल्यांकन करता है
यह केवल दिखाता है कि यह अन्य (बाद में) भाषाओं के समान सम्मेलनों का उपयोग नहीं करता है। - le dorfier 22 दिसंबर '08 3:35 पर
मैं "इस" बात को एक बहुत ही तुच्छ मुद्दा कहूंगा। और उफ़, अपरिभाषित व्यवहार के मेरे उदाहरणों में कुछ त्रुटियों को पकड़ने के लिए धन्यवाद। :) हालाँकि मुझे समझ नहीं आ रहा है कि आकार के बारे में क्या जानकारी है जो पहले एक में कुछ भी करना है। एक पॉइंटर को आवंटित स्मृति के बाहर इंगित करने की अनुमति नहीं है - jalf 22 दिसंबर '08 को 4:18 बजे
क्या यह एक निरंतर संकेत है? - यशराज दिसम्बर २२'०१ ६:३५ बजे
यह स्थिर हो सकता है यदि विधि const int getFoo () const है; <- getFoo के दायरे में, "यह" स्थिर है, और इसलिए आसानी से पढ़ा जाता है। यह बग्स को रोकता है और कॉलर को कुछ स्तर की गारंटी प्रदान करता है कि ऑब्जेक्ट नहीं बदलेगा। - डग टी। Dec 22 '08 को 16:42 बजे
आप इसे "पुनः" नहीं दे सकते। यानी आप ऐसा नहीं कर सकते हैं "यह = & अन्य;", क्योंकि यह एक प्रतिद्वंद्विता है। लेकिन यह टाइप टी * का है, टाइप टी कास्ट का नहीं। यानी यह एक गैर-स्थिर सूचक है। यदि आप एक कास्ट विधि में हैं, तो यह एक पॉइंटर है। टी कास्ट। लेकिन पॉइंटर नॉनकॉस्ट है - जोहान्स स्काउब - 17 दिसंबर को 22'08 जलाया
इस तरह "इस" के बारे में सोचें: # इस पर (इस_ + 0) को संकलित करें जहां संकलक ऑब्जेक्ट के लिए एक सूचक के रूप में "इस_" बनाता है और "इस" को एक कीवर्ड बनाता है। आप "यह" नहीं दे सकते क्योंकि (यह_ + 0) एक प्रतिद्वंद्विता है। निश्चित रूप से यह नहीं है कि यह कैसा है (ऐसा कोई मैक्रो नहीं है), लेकिन यह इसे समझने में मदद कर सकता है - जोहानस शहाब - 22 दिसंबर को प्रातः 17:55 बजे
मेरा सवाल है, thisएक सूचक एक संदर्भ क्यों नहीं है? इसे पॉइंटर बनाने का कोई विशेष कारण?
कुछ और तर्क क्यों thisएक संदर्भ होने से समझ में आता है:
- पर विचार करें
Item 1सेMore Effective C++जब यह गारंटी है कि हम एक वैध वस्तु यानी नहीं एक शून्य (मेरी व्याख्या) है उपयोग संदर्भ:। - इसके अलावा, संदर्भ को संकेत की तुलना में अधिक सुरक्षित माना जाता है (क्योंकि हम एक आवारा सूचक के साथ मेमोरी को खराब नहीं कर सकते हैं)।
- तीसरा, संदर्भों तक पहुँचने के लिए वाक्यविन्यास (
.) बिंदुओं (->या(*)) तक पहुँचने से थोड़ा सा अच्छा और छोटा है ।
_AFXWIN_INLINE HWND CWnd::GetSafeHwnd() const { return this == NULL ? NULL : m_hWnd; }
thisहमेशा मूल्यांकन नहीं करता हैtrue?