सी ++ मानक के अनुसार (9.2.3.2 स्टेटिक डेटा सदस्य)
1 एक स्थैतिक डेटा सदस्य किसी वर्ग के उप-अंशों का हिस्सा नहीं है ...
और (9.2.2.1 यह सूचक)
1 एक गैर-स्थैतिक (9.2.1) सदस्य फ़ंक्शन के शरीर में, यह एक प्रचलित अभिव्यक्ति है जिसका मूल्य उस वस्तु का पता है जिसके लिए फ़ंक्शन कहा जाता है। एक कक्षा X के सदस्य फ़ंक्शन में इसका प्रकार X * है। यदि सदस्य फ़ंक्शन को const घोषित किया जाता है, तो इसका प्रकार const X * है , ...
और अंत में (9.2.2 गैर-स्थैतिक सदस्य कार्य)
3 ... यदि नाम लुकअप (3.4) कुछ कक्षा C के गैर-स्थिर गैर-प्रकार के सदस्य के लिए आईडी-एक्सप्रेशन में नाम को हल करता है, और यदि या तो आईडी-एक्सप्रेशन का संभावित मूल्यांकन किया गया है या C X या बेस क्लास है X का, आईडी-एक्सप्रेशन-अभिव्यक्ति (5.2.5) एक क्लास मेंबर एक्सप्रेशन (5.2.5) का उपयोग करके (* यह) (9.2.2.1) के रूप में बदल दिया जाता है, जो बाईं ओर पोस्टफिक्स-एक्सप्रेशन है। ऑपरेटर।
इस प्रकार इस वर्ग की परिभाषा में
class A
{
public:
static int a;
void set() const
{
a = 10;
}
};
स्थैतिक डेटा सदस्य a
वर्ग प्रकार के ऑब्जेक्ट का उप-विषय this
नहीं है और स्थिर डेटा सदस्य तक पहुंचने के लिए पॉइंटर का उपयोग नहीं किया जाता है। इसलिए कोई भी सदस्य फ़ंक्शन, गैर-स्थिर स्थिरांक या गैर-स्थिर, या एक स्थैतिक सदस्य फ़ंक्शन डेटा सदस्य को बदल सकता है क्योंकि यह एक स्थिर नहीं है।
इस वर्ग की परिभाषा में
class A
{
public:
int a;
void set() const
{
a = 10;
}
};
गैर-स्थैतिक डेटा सदस्य a
वर्ग प्रकार के ऑब्जेक्ट का एक उप-विषय है। किसी सदस्य फ़ंक्शन में इसे एक्सेस करने के लिए या तो उपयोग किया जाता है या इस सिंटैक्स के एक सदस्य एक्सेस सिंटैक्स निहित है। this
डेटा सदस्य को संशोधित करने के लिए आप निरंतर सूचक का उपयोग नहीं कर सकते हैं । और सूचक यह वास्तव में const A *
फ़ंक्शन के भीतर प्रकार है set
क्योंकि फ़ंक्शन को क्वालीफायर के साथ घोषित किया गया है const
। यदि फ़ंक्शन में इस मामले में कोई क्वालीफायर नहीं था, तो डेटा सदस्य को बदला जा सकता है।