एक सामान्य सूचक की तरह इसके बारे में सोचो:
int * const i;
गैर const
int
करने के लिए एक const
सूचक है। आप int
बदल सकते हैं, लेकिन सूचक नहीं।
int const * i;
एक const
int
करने के लिए एक गैर const
सूचक है। आप सूचक बदल सकते हैं लेकिन int
नहीं।
अब, unique_ptr
के लिए, यह const
अंदर या <>
बाहर चला जाता है कि क्या की एक सवाल है। तो:
std::unique_ptr<int> const u;
पहले की तरह है। आप int
बदल सकते हैं, लेकिन सूचक नहीं।
क्या आप चाहते हैं:
std::unique_ptr<int const> u;
आप सूचक को बदल सकते हैं, लेकिन नहीं int
। या शायद भी:
std::unique_ptr<int const> const u;
यहाँ आप सूचक याint
नहीं बदल सकते।
सूचना कैसे मैं हमेशा सही पर const
जगह? यह थोड़ा असामान्य है, लेकिन पॉइंटर्स से निपटने के दौरान आवश्यक है। const
हमेशा बाईं ओर तुरंत उस चीज़ पर लागू होता है, चाहे *
(सूचक const
), या int
है। http://kuhllib.com/2012/01/17/continental-const-placement/ देखें।
const int
लेखन, सोच int const *
तक ले सकता है एक गैर const
int
करने के लिए एक const
-pointer है, जो गलत है।
मैं उम्मीद यह है, क्योंकि ऑपरेटर '.' अतिभारित नहीं किया जा सकता की जरूरत है। – erip
सी ++ में 'const' उथला है। एक 'int * const' आपको ऑब्जेक्ट की ओर इशारा करने की अनुमति देता है। –
एक ही कोड की अनुमति दी जाएगी, तो सूचक स्मार्ट नहीं थे। स्थिरता पॉइंटर पर नहीं, पॉइंटर पर लागू होती है। – juanchopanza