2010-11-15 17 views
5

अगर इससे पहले पूछा गया है तो मैं क्षमा चाहता हूं। मेरे खोज परिणामों ने एक समान सवाल नहीं उठाया।स्थैतिक चर का उपयोग करने वाली कॉन्स विधि

यह एक वैचारिक प्रश्न है। करने के लिए MSDN और दूसरों के रूप में अच्छी तरह से अनुसार:

एक निरंतर सदस्य समारोह किसी भी डेटा सदस्यों को संशोधित नहीं कर सकते हैं या किसी भी सदस्य कार्यों कि स्थिर नहीं कर रहे हैं फोन

तो क्यों हम से स्थिर सदस्य चर का उपयोग करने की अनुमति दी जाती है एक कॉन्स विधि?

+0

यदि आप केवल सदस्य चर पढ़ रहे हैं तो आप उन्हें बदल नहीं रहे हैं और दाहिनी आवश्यकता का उल्लंघन नहीं करते हैं? – Jay

+0

@Jay मैं इसे भी बदल सकता हूं, न केवल इसे – Samaursa

उत्तर

9

सी ++ मानक का कहना है इस बारे में const सदस्य कार्य: सदस्य समारोह const घोषित किया जाता है तो

, इस प्रकार के const X* है, [...]

एक const सदस्य समारोह में, ऑब्जेक्ट जिसके लिए फ़ंक्शन कहा जाता है उसे const एक्सेस पथ के माध्यम से एक्सेस किया जाता है; इसलिए, const सदस्य फ़ंक्शन ऑब्जेक्ट और उसके गैर-स्थैतिक डेटा सदस्यों को संशोधित नहीं करेगा।

तो आप देखते हैं कि केवल गैर स्थैतिक डेटा सदस्य सदस्य समारोह की 'स्थिरता' का हिस्सा हैं।

हालांकि, मुझे लगता है कि अधिक महत्वपूर्ण बात यह इंगित करता है एक अच्छा तरीका यह समझना होगा कि क्या const सदस्य कार्यों के साथ हो रहा है कि यह निहित this सूचक const के लिए सूचक बना देता है।

चूंकि स्थैतिक सदस्यों को this पॉइंटर (स्पष्ट रूप से या स्पष्ट रूप से) के माध्यम से उपयोग करने की आवश्यकता नहीं है, इसलिए उन्हें पहुंच const योग्य नहीं है।

+1

आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद। कुछ विचारों के बाद मैंने आपको सही उत्तर के रूप में जांचने का फैसला किया क्योंकि यह किसी भी संदेह को छोड़कर अधिक विस्तार से बताता है, विशेष रूप से भाग: _ ".. समझने का एक अच्छा तरीका क्या हो रहा है ..." _ – Samaursa

13

क्योंकि वे ऑब्जेक्ट का हिस्सा नहीं हैं।

+1

सरल लेकिन भी बिंदु पढ़ें! – thecoshman

संबंधित मुद्दे