2015-04-30 10 views
5

मैंने वास्तव में अब तक कभी कोशिश नहीं की है। क्या कक्षा के बिना नामस्थान स्कोप में स्टेटिक्स होना संभव है? क्यों नहीं?क्या सांख्यिकी को कक्षा की आवश्यकता है?

namespace MyNamespace 
{ 
    static int a; 
} 

assign something, somewhere else.... 
+0

मैं संभव हूं लेकिन इसका मतलब यह नहीं हो सकता कि आप क्या सोचते हैं - मुझे लगता है कि यह स्थिर के अन्य अर्थों में से एक है ;-)। –

उत्तर

4

अनुलग्नक डी (संगतता सुविधाओं) [सी ++ 03]

डी 2: स्थिर कीवर्ड का उपयोग, जब नाम स्थान दायरे में वस्तुओं की घोषणा मान्य नहीं है।

static नामस्थान क्षेत्र (वैश्विक या अन्यथा) पर परिवर्तनीय आंतरिक संबंध है। इसका मतलब है, इसे अन्य अनुवाद इकाइयों से नहीं पहुंचा जा सकता है। यह अनुवाद इकाई के लिए आंतरिक है जिसमें इसे घोषित किया जाता है।

अद्यतन
जब आप static के रूप में एक चर घोषित, इसका मतलब है कि इसके दायरे दिया अनुवाद इकाई केवल तक सीमित है। स्थैतिक के बिना दायरा वैश्विक है।

जब आप staticएक ज फ़ाइल अंदर के रूप में एक चर घोषित (भीतर या नाम स्थान के बिना, कोई फर्क नहीं पड़ता), और विभिन्न सीपीपी फाइलों में है कि हेडर फाइल में शामिल हैं, स्थिर चर स्थानीय स्तर से प्रत्येक के दायरे वाला हो जाता है .cpp फ़ाइलें। तो अब, प्रत्येक .cpp फ़ाइल जिसमें उस शीर्षलेख को शामिल किया जाएगा, उस चर की अपनी प्रतिलिपि होगी।

static कीवर्ड बिना संकलक इसलिए जितनी जल्दी है कि चर का केवल एक प्रतिलिपि उत्पन्न होगा, जैसा कि आप कई सीपीपी लिंकर फ़ाइलें कई परिभाषाएं के बारे में शिकायत करेंगे हेडर फाइल शामिल हैं।

+1

"जैसा कि अन्य ने अपनी पोस्ट में उल्लेख किया है" ... क्या पोस्ट? – user463035818

+1

यह बहिष्करण सी ++ 11 में पूर्ववत किया गया था; नेमस्पेस स्कोप पर 'स्थैतिक' अब बहिष्कृत नहीं है। –

+0

@ tobi303 कॉपी/पेस्ट त्रुटि? :) – rozina

संबंधित मुद्दे