शुरू करने के लिए आप शायद जानते हैं कि const
इसका उपयोग किसी वस्तु के डेटा या पॉइंटर को बदलने योग्य या दोनों के लिए नहीं किया जा सकता है।
const Object* obj; // can't change data
Object* const obj; // can't change pointer
const Object* const obj; // can't change data or pointer
हालाँकि आप सिंटैक्स का भी उपयोग कर सकते हैं:
Object const *obj; // same as const Object* obj;
केवल एक चीज जो प्रतीत होती है, वह है कि आप किस const
कीवर्ड को डालते हैं । व्यक्तिगत रूप से मैं const
टाइप करने के लिए बाईं ओर रखना पसंद करता हूं यह निर्दिष्ट करने के लिए डेटा परिवर्तनीय नहीं है क्योंकि मुझे लगता है कि यह मेरे बाएं से दाएं मानसिकता में बेहतर पढ़ता है लेकिन कौन सा वाक्यविन्यास पहले आया था?
इससे भी महत्वपूर्ण बात यह है कि const
डेटा को निर्दिष्ट करने के दो सही तरीके क्यों हैं और आप किसी भी स्थिति में किसी एक को पसंद करेंगे या किसी अन्य की आवश्यकता होगी?
संपादित करें:
तो ऐसा लगता है कि यह एक मनमाना निर्णय था जब कंपाइलरों को चीजों की व्याख्या करने के मानक को मेरे जन्म से बहुत पहले ही तैयार कर लिया गया था। चूँकि const
कीवर्ड के बाईं ओर क्या लागू होता है (डिफ़ॉल्ट रूप से?) मुझे लगता है कि उन्हें लगा कि कीवर्ड को लागू करने के लिए "शॉर्टकट" को जोड़ने में कोई बुराई नहीं है और कम से कम अन्य तरीकों से क्वालिफायर टाइप करें, जब तक कि घोषणा बदल नहीं जाती पार्सिंग एक * या ...
यह सी में भी मामला था तो मैं मान रहा हूं?
const
के बाद , प्रकार जैसे#define MAKE_CONST(T) T const
बजाय#define MAKE_CONST(T) const T
इतना है किMAKE_CONST(int *)
सही ढंग से करने के लिए विस्तार होगाint * const
बजायconst int *
।