यह क्या करता है this
सूचक गैर स्थिरांक के लिए एक स्थिरांक सूचक के बजाय const करने के लिए एक स्थिरांक सूचक हो बनाने के लिए प्रभावी ढंग से है। तो, किसी भी समय जब आप किसी कॉन्स्ट सदस्य फ़ंक्शन में this
संदर्भित करते हैं - या तो स्पष्ट रूप से या निहित रूप से - आप कॉन्स्टेंस के लिए एक कॉन्स्ट पॉइंटर का उपयोग कर रहे हैं।
तो, वर्ग तुम यहाँ है, किसी भी गैर स्थिरांक समारोह में के मामले में, this
के प्रकार WithStatic const *
है, जबकि स्थिरांक कार्यों में, अपने प्रकार const WithStatic * const
है।
किसी भी सूचक के साथ किसी भी सूचक के साथ, आप जो कुछ भी इंगित करते हैं उसे बदल नहीं सकते हैं। इसलिए, आप इसके किसी भी सदस्य चर को बदल नहीं सकते हैं, और आप इसके किसी भी गैर-कॉन्स्ट सदस्य फ़ंक्शन को कॉल नहीं कर सकते हैं।
आम तौर पर, यदि आप उचित रूप से ऐसा कर सकते हैं, तो सदस्य कार्य को दृढ़ता से बनाना एक अच्छा विचार है, क्योंकि यह गारंटी देता है कि आप ऑब्जेक्ट की स्थिति को बदलने के लिए नहीं जा रहे हैं, और आप इसे एक कॉन्स्ट ऑब्जेक्ट के साथ कॉल कर सकते हैं।
यह सदस्य चर के लिए संभव बदल दिया है अगर वे mutable
या volatile
हो, लेकिन उन है कि शायद बेहतर परहेज कर रहे हैं जब तक आप भाषा के साथ अधिक परिचित हो और अधिक उन्नत विषयों रहे हैं। निश्चित रूप से, आपको आमतौर पर उनके बारे में चिंता करने की आवश्यकता नहीं होती है और जब तक आपको आवश्यकता नहीं होती तब तक उनका उपयोग नहीं करना चाहिए। this
पॉइंटर की स्थिरता को दूर करना भी संभव है, जिस बिंदु पर आप इसे बदल सकते हैं, लेकिन आईआईआरसी, यह अनिर्धारित व्यवहार है, और यह निश्चित रूप से आम तौर पर एक बुरा विचार माना जाता है। ऐसे में ऐसे कई उदाहरण हैं जहां किसी ऑब्जेक्ट की स्थिति को किसी कॉन्स्ट सदस्य फ़ंक्शन के भीतर बदलना संभव है, लेकिन यह सामान्य रूप से संभव नहीं है और जब भी यह सर्वोत्तम होता है तब भी इससे बचा जाता है।
जब आप सदस्य फ़ंक्शन कॉन्स्ट करते हैं, तो आप प्रभावी रूप से वादा कर रहे हैं कि ऑब्जेक्ट की स्थिति उस फ़ंक्शन कॉल द्वारा नहीं बदली जाएगी (हालांकि स्पष्ट रूप से दुष्प्रभाव हो सकते हैं क्योंकि आप printf()
जैसे कार्यों को कॉल कर सकते हैं) ।
स्रोत
2010-04-27 02:56:17
की डुप्लीकेट http://stackoverflow.com/questions/98705/what-are-the-semantics-of-a-const-member-function और http://stackoverflow.com/questions/ 49035/what-does-the-const-operator-mean-when-used-with-a-method-in-c – jweyrich