2010-10-17 26 views
10

क्यों या किस कारण से सी ++ में कक्षा सदस्य चर को static mutable के रूप में घोषित करना संभव नहीं है? कुछसी ++ में स्थिर परिवर्तनीय सदस्य चर?

static mutable int t; //This won't compile 

मेरे लिए, ऐसी घोषणाओं पर प्रतिबंध लगाने का कोई कारण नहीं है। जैसे वैश्विक वर्ग-व्यापी आंकड़ों को बनाए रखने के कारणों के लिए, स्थिर वैरिएबल होना सुविधाजनक हो सकता है जिसे (तार्किक रूप से) कॉन्स्ट विधियों द्वारा बदला जा सकता है। तो या तो यह सी ++ में गलत तरीके से गलत है और अनावश्यक रूप से जटिल है, या एक व्यावहारिक या सैद्धांतिक कारण है जिसे मैं नहीं देख सकता।

उत्तर

23

कक्षा के गैर-स्थिर स्थिर सदस्य पहले से ही कक्षा के किसी भी (कॉन्स्ट और गैर-कॉन्स्ट) विधियों द्वारा संशोधित किए जा सकते हैं। इसे mutable के साथ घोषित करने की कोई आवश्यकता नहीं है और कोई बिंदु नहीं है। वह बिल्कुल कुछ हासिल नहीं करेगा।

1

म्यूटेबल कीवर्ड एक "कॉन्स" की अनुमति देता है और इसलिए गैर स्थैतिक सदस्य फ़ंक्शन को गैर-स्थैतिक सदस्य चर बदलने के लिए अनुमति देता है (यानी, उत्परिवर्तनीय)। स्टेटिक फ़ंक्शन कॉन्स्ट नहीं हो सकते हैं और कॉन्स्ट सदस्य फ़ंक्शन गैर-स्थिर स्थिर सदस्यों को बदल सकते हैं। मुझे पता है कि यह कुछ उलझन में है, लेकिन इसकी वजह यह है कि एक परिवर्तनीय स्थैतिक सदस्य परिवर्तनीय को अनुमति देने की आवश्यकता नहीं है।

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