फ़ाइल दायरे पर, C++ में कोई अंतर नहीं। const
आंतरिक लिंक को डिफ़ॉल्ट बनाता है, और सभी वैश्विक चरों में स्थिर जीवनकाल होता है। लेकिन पहले संस्करण में सी में एक ही व्यवहार है, इसलिए इसका उपयोग करने का एक अच्छा कारण हो सकता है।
किसी फ़ंक्शन के भीतर, दूसरे संस्करण को सी या सी ++ में पैरामीटर से गणना की जा सकती है, इसे किसी अन्य भाषा की आवश्यकता के साथ संकलन-समय स्थिर नहीं होना चाहिए।
कक्षा के भीतर, मूल रूप से कार्यों के लिए एक ही चीज़, एक उदाहरण const
मान सीटीओआर-प्रारंभकर्ता-सूची में गणना की जा सकती है। एक static const
स्टार्टअप प्रारंभ के दौरान सेट किया गया है और शेष कार्यक्रम के लिए अपरिवर्तित बनी हुई है। (नोट: static
सदस्यों के लिए कोड एक छोटे से अलग दिखता है क्योंकि घोषणा और प्रारंभ अलग होती है।)
याद रखें, सी ++ में, const
मतलब है केवल पढ़ने के लिए, नहीं निरंतर। यदि आपके पास पॉइंटर-टू -const
है तो प्रोग्राम के अन्य भाग उस मूल्य को बदल सकते हैं जब आप नहीं देख रहे हैं। यदि चर const
के साथ परिभाषित किया गया था, तो कोई भी प्रारंभ करने के बाद इसे बदल नहीं सकता है लेकिन प्रारंभिकता अभी भी मनमाने ढंग से जटिल हो सकती है।
स्रोत
2010-09-14 13:22:19
'स्थिर 'शायद सी ++ में सबसे अधिक अधिभारित कीवर्ड है। आपके कोड का अर्थ व्यापक रूप से भिन्न होता है कि यह नामस्थान क्षेत्र में, वर्ग के दायरे पर या फ़ंक्शन स्कोप पर है या नहीं। आप इसे स्पष्ट करना चाहते हैं। – sbi
@ एसबीआई: मैंने सोचा कि मैंने पहले ही किया है। फ़ंक्शन स्कोप (जहां यह एक स्टोरेज क्लास विनिर्देशक है) और फ़ाइल स्कोप (जहां यह एक लिंकेज विनिर्देशक है)। वर्ग के सदस्यों और नामस्थान स्कोप्ड चर विशेष रूप से इस प्रश्न के संबंध में मेरे लिए चिंता का विषय नहीं हैं, हालांकि अगर किसी को लगता है कि एक दिलचस्प भेद है, तो उसे भी कवर करने में संकोच न करें। – Clifford
@Clifford: मुझे खेद है कि मैंने उन अंतिम शब्दों को अनदेखा किया। हालांकि, इसने आपके हिस्से पर एक गलतफहमी का खुलासा किया: सी ++ में, फ़ाइल स्कोप _is_ नेमस्पेस स्कोप। यदि आप किसी भी नामस्थान के बाहर कुछ भी घोषित करते हैं, तो यह केवल _global namespace_ से संबंधित होगा (और पूर्व में कोई पहचानकर्ता नहीं होने के साथ पूर्ववर्ती '::' के माध्यम से सुलभ है। मुझे वैश्विक नामस्थान और इसमें नामित किसी भी नामस्थान के बीच किसी भी सार्थक अंतर के बारे में पता नहीं है। निश्चित रूप से 'स्थिर 'वस्तुओं के बारे में कोई नहीं है। – sbi