const
का उपयोग किसी प्रकार पर दो बार गैर + सी ++ 2003 में अवैध है लेकिन सी ++ 2011 में कानूनी (देखें 7.1.6.1 [decl.type.cv] अनुच्छेद 1: "रिडंडेंट सीवी-योग्यता को अनदेखा किया जाता है।")। जब आप
static const TYPE const name[5];
आपने TYPE
लगातार दो बार बनाया था। नोट, हालांकि, यह घोषणा सी ++ 2011 में भी गैरकानूनी है, क्योंकि इसे घोषित करते समय आपको const
ऑब्जेक्ट प्रारंभ करने की आवश्यकता है।
const TYPE
और
TYPE const
के अर्थ बिल्कुल बराबर है: दोनों ही मामलों में आप TYPE
वस्तु स्थिर हैं। स्थिरता के लिए, मैं हमेशा const
दाहिने ओर रखता हूं क्योंकि शीर्ष-स्तर के प्रकार को छोड़कर प्रत्येक const
को दाएं तरफ रखा जाना चाहिए (ठीक है, जब तक कि कुछ कोडिंग दिशानिर्देश अलग-अलग नहीं होते हैं लेकिन मैं मूर्ख कोडिंग दिशानिर्देशों से लड़ रहा हूं)।
पॉइंटर्स का उपयोग करते समय, लगता है कि अलग हो जाते हैं। इसमें दो प्रकार शामिल हैं: प्रकार और पॉइंटर को इंगित करें। इनमें से प्रत्येक को अलग-अलग const
बनाया जा सकता है:
TYPE const* ptr1(0); // non-const pointer to const TYPE
TYPE* const ptr2(0); // const pointer to non-const TYPE
TYPE const* const ptr3(0); // const pointer to const TYPE
सबसे अच्छा तरीका है यह पता लगाने की क्या किया जाता है const
दाईं से बाईं ओर प्रकार घोषणा को पढ़ने के लिए है। बेशक, यह मानता है कि const
क्वालीफायर सही स्थान पर डाल दिए जाते हैं। आप उपरोक्त चर्चा में const
volatile
या const volatile
द्वारा प्रतिस्थापित कर सकते हैं और एक ही तर्क लागू होता है।
स्रोत
2012-08-23 22:25:07
त्वरित उत्तर के लिए धन्यवाद। मैं कल यह सही चिह्नित करूंगा। – Jim