कारण स्थिरांक में से कुछ का उपयोग करता है वास्तव में बहुत मतलब नहीं है।
मान लीजिए आप निम्नलिखित कार्य हो:
void myFunction (const int value);
स्थिरांक संकलक कि मूल्य समारोह के अंदर परिवर्तन नहीं करना चाहिए बताता है। इस जानकारी के पास कॉलर के लिए कोई मूल्य नहीं है।मूल्य के साथ क्या करना है यह तय करने के लिए यह कार्य स्वयं पर निर्भर है। फोन करने वाले के लिए, निम्न दो कार्यशील परिभाषाएँ वास्तव में उसके लिए एक ही व्यवहार करते हैं:
void myFunction (const int value);
void myFunction (int value);
क्योंकि मूल्य मूल्य से पारित हो जाता है, जिसका अर्थ है समारोह वैसे भी एक स्थानीय प्रति हो जाता है कि।
दूसरी ओर, यदि तर्क एक संदर्भ या सूचक है, तो चीजें बहुत अलग हो जाती हैं।
void myFunction (const MyClass &value);
यह फोन करने वाले है कि मूल्य संदर्भ द्वारा पारित कर दिया है बताता है (ताकि स्क्रीन के पीछे यह वास्तव में एक सूचक है), लेकिन फोन करने वाले मान बदलने के लिए नहीं वादा करता है। एक ही संकेत के लिए सच है:
void myFunction (const MyClass *value);
हम (क्योंकि प्रदर्शन के कारणों का) MyClass के सूचक के पास, लेकिन समारोह मान बदलने के लिए नहीं वादा करता है।
, तब हम निम्नलिखित लिखना होगा:
void myFunction (MyClass * const value);
फिर हम वापस वह पूर्णांक पहले स्थिति है। myFunction एक सूचक मिलता है, जो मूल्य से गुजरता है, और जो स्थिर है। चूंकि माईफंक्शन को सूचक मूल्य की प्रति प्राप्त होती है, इसलिए यह कॉलर के लिए कोई फर्क नहीं पड़ता कि यह स्थिर है या नहीं। सबसे महत्वपूर्ण बात यह है कि मेरा कार्य मूल्य की सामग्री को बदल सकता है, क्योंकि पॉइंटर चर स्वयं ही स्थिर है, लेकिन इसमें सामग्री नहीं है।
ही वापसी मूल्यों के लिए सच है:
const double squareRoot(double d);
यह किसी भी मतलब नहीं है। स्क्वायर रूट एक कॉन्स डबल देता है लेकिन चूंकि इसे 'मूल्य से' पारित किया जाता है, और इस प्रकार मुझे अपने स्थानीय चर में कॉपी करने की आवश्यकता होती है, मैं जो कुछ भी चाहता हूं वह कर सकता हूं।
दूसरी ओर:
const Customer *getCustomer(char *name);
मुझसे कहता है कि getCustomer मुझे एक ग्राहक के लिए सूचक देता है, और मैं ग्राहक की सामग्री को बदलने की अनुमति नहीं कर रहा हूँ।
const Customer *getCustomer(const char *name);
का संयोजन है, लेकिन वर्ग चर को संशोधित करने के बारे में अधिक। – Jor