C ++ में Namespace के बारे में जानने के लिए आपको सब कुछ चाहिए

यह लेख आपको C ++ में Namespace का विस्तृत और व्यापक ज्ञान प्रदान करेगा। यह किसी भी प्रोग्राम में विभिन्न प्रकार और उपयोग हैं।

C ++ में Namespace का उपयोग तार्किक समूहों में कोड को व्यवस्थित करने और नाम टकराव को रोकने के लिए किया जाता है जो विशेष रूप से तब हो सकता है जब आपके कोडबेस में कई लाइब्रेरी शामिल होती हैं। इस लेख में निम्नलिखित बिंदुओं को शामिल किया जाएगा:

नेमस्पेस की आवश्यकता

एक स्थिति पर विचार करें, हम कुछ कोड लिख रहे हैं जिसमें एक फ़ंक्शन है जिसे abc () कहा जाता है और एक अन्य पूर्वनिर्धारित पुस्तकालय उपलब्ध है जिसमें समान फ़ंक्शन abc () भी है। अब संकलन के समय, कंपाइलर का कोई सुराग नहीं है कि हम अपने कोड के भीतर एबीसी () फ़ंक्शन के किस संस्करण का उल्लेख कर रहे हैं।



C ++ में नाम स्थान

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

सभी C ++ मानक पुस्तकालय प्रकार और फ़ंक्शन को std namepace या stp के अंदर नेस्टेड namepaces घोषित किया जाता है, इस प्रकार यह अधिकतर कार्यक्रमों में व्यापक रूप से उपयोग किया जाता है।

कैसेंड्रा टेबल बनाम कॉलम परिवार

एक नाम स्थान परिभाषित करना

नाम स्थान को परिभाषित करने के लिए हम कीवर्ड नेमस्पेस के साथ शुरू करते हैं, इसके बाद नामस्थान नाम दिया गया है:

namespace namespace_name {int a, b // कोड डिक्लेरेशन जहां // a और b अनाथ हैं // namespace_name का स्कोप}

एक नाम स्थान को परिभाषित करते समय याद रखने के लिए अंक

  • नेमस्पेस घोषणाएं केवल वैश्विक दायरे में दिखाई देती हैं।
  • नाम स्थान की घोषणा के पास पहुंच निर्दिष्ट नहीं है।
  • नेमस्पेस की घोषणाओं को किसी अन्य नामस्थान के भीतर घोंसला बनाया जा सकता है।
  • नेमस्पेस की परिभाषा के समापन ब्रेस के बाद अर्धविराम देने की आवश्यकता नहीं है।
  • नेमस्पेस की परिभाषा को कई इकाइयों में विभाजित किया जा सकता है।
# नामस्थान std namespace फर्स्ट_फंक्शन {void func () {cout का उपयोग कर निकालें<< 'Inside first_function' << endl } } namespace second_function { void func() { cout << 'Inside second_function' << endl } } int main () { // Calls function from first name space. first_function::func() // Calls function from second name space. second_function::func() return 0 }

आउटपुट:

कवक () फ़ंक्शन को दो अलग-अलग समयों को परिभाषित करने के लिए उपरोक्त उदाहरण में, हम नामस्थान अवधारणा का उपयोग करते हैं। हम पहले फ़ंक्शन को नेमस्पेस फर्स्ट_फंक्शन और के तहत परिभाषित करते हैंनामस्थान दूसरा_फंक्शन के तहत दूसरा कार्य। इन फ़ंक्शन को कॉल करने के लिए हम निम्न तरीके से स्कोप रिज़ॉल्यूशन ऑपरेटर का उपयोग करते हैं - First_function :: func () और second_function :: func ()।

C ++ में Namespace का उपयोग करना

कार्यक्रम में नाम स्थान का उपयोग करने के तीन तरीके हैं,

  1. का उपयोग कर निर्देश
  2. उपयोग-घोषणा
  3. स्कोप रिज़ॉल्यूशन ऑपरेटर: (:)

का उपयोग कर निर्देश

हम नामस्थानों के प्रचलन से बच सकते हैं का उपयोग कर नेमस्पेस निर्देश। का उपयोग कर कीवर्ड हमें एक वैश्विक स्कोप के साथ आपके प्रोग्राम में संपूर्ण नाम स्थान आयात करने की अनुमति देता है। इसका उपयोग हमारी आवश्यकता के अनुसार एक नाम स्थान को किसी अन्य नाम स्थान या किसी कार्यक्रम में आयात करने के लिए किया जा सकता है।

एक हेडर फ़ाइल पर विचार करें Namespace_first.h:

नामस्थान पहले {int a class First_class {int i}}

Namespace_second.h फ़ाइल में उपरोक्त नामस्थान हेडर फ़ाइल सहित: 'Namespace_first .h' शामिल करें

नाम स्थान दूसरा {नाम स्थान का उपयोग कर पहले First_class obj int y}

हम namespace_First को namespace_Second में आयात करते हैं, इसलिए class फर्स्ट_क्लास अब namespace_Second में उपलब्ध होगा। इसलिए हम निम्नलिखित प्रोग्राम को एक अलग फाइल में लिख सकते हैं, चलो new_file.cpp कहते हैं।

# नाम 'नाम_सेकेंड .h' शून्य परीक्षण () {नामस्थान दूसरा का उपयोग करके // कक्षा की पहली First_class फर्स्टक्लास obj2} का ऑब्जेक्ट बनाना

इसलिये , निर्देश का उपयोग करने से C ++ में एक नाम स्थान का उपयोग करना बहुत आसान हो जाता है, जहाँ आप चाहते हैं।

कृत्रिम बुद्धिमत्ता में नवीनतम तकनीक

उपयोग-घोषणा

उपयोग-घोषणा में, हम एक समय में एक विशिष्ट नाम आयात करते हैं जो केवल वर्तमान दायरे के अंदर उपलब्ध है और इसे गुंजाइश रिज़ॉल्यूशन की सहायता से कहा जाता है। नोट: उपयोग-घोषणा के साथ आयातित नाम निर्देशन का उपयोग करने के साथ आयातित नाम को ओवरराइड कर सकता है। हम इसे नीचे दिए गए उदाहरण में देख सकते हैं।

आइए एक हेडर फाइल पर विचार करें New_File.h:

नेमस्पेस फर्स्ट {void A () {cout<< 'A of First namespacen' } } namespace Second { void A() { cout << 'A of Second namespacen' } }

अब एक नया प्रोग्राम फ़ाइल बनाते हैं जिसका नाम New_file_2 है। कोड के साथ नीचे:

#include 'New_file.h' void B () {नेमस्पेस फर्स्ट // का उपयोग करते हुए सेकंड का उपयोग करके डायरेक्टिव ए: // // डिक्लेरेशन का उपयोग करते हुए फर्स्ट नाम ए (ए) // क्लास ए (फर्स्ट नेमस्पेस ए) () // ए (दूसरा नाम स्थान का)}

स्कोप रिज़ॉल्यूशन ऑपरेटर: (:)

हम नाम स्थान के नाम और स्कोप रिज़ॉल्यूशन का उपयोग करके स्पष्ट रूप से किसी भी नाम में घोषित नाम निर्दिष्ट कर सकते हैं। :: ' पहचानकर्ता के साथ ऑपरेटर।

namepace New_space {class X {static int i public: void func ()} // class नाम घोषणा वर्ग Y} // प्रारंभिक वर्ग चर int int New_space :: X :: i = 23 वर्ग New_space :: Y {int a public: int getdata () {cout<< a } // Constructor declaration Y() } // Constructor definition explicitly New_space::Y::Y() { a=0 }

जावा में स्ट्रिंग का डिफ़ॉल्ट मान

C ++ में असंतोषजनक नामस्थान

जैसा कि हम जानते हैं कि C ++ में एक नाम स्थान कई भागों में परिभाषित किया जा सकता है, इस प्रकार यह इसके अलग-अलग परिभाषित भागों के योग से बना है। इसलिए, यदि नामस्थान के एक हिस्से को किसी अन्य फ़ाइल में परिभाषित नाम की आवश्यकता होती है, तो भी उस नाम को उसके दायरे में घोषित किया जाना चाहिए। निम्नलिखित तरीके से निम्नलिखित नामस्थान लिखना या तो एक नया नाम स्थान परिभाषित करता है या मौजूदा में नए तत्व जोड़ता है:

नाम स्थान नामस्थान_नाम {// कोड बॉडी}

C ++ में नेस्टेड Namespace

Namespaces को आसानी से नेस्ट किया जा सकता है और हम एक नेमस्पेस को दूसरे नेमस्पेस के अंदर परिभाषित कर सकते हैं:

namespace namespace_name1 {// codep of namespace_name1 namespace namespace_name2 {// कोड बॉडी नेस्टेड namamespace_name2}}

इसके साथ, हम C ++ लेख में Namespace के अंत में आते हैं। मुझे आशा है कि आपको यह पता चल गया होगा कि वास्तव में C ++ में एक नाम स्थान क्या है और इसे परिभाषित करने के विभिन्न तरीके क्या हैं। आप और अधिक जानने के लिए चाहते हैं, तो बाहर की जाँच करें Edureka, एक विश्वसनीय ऑनलाइन शिक्षण कंपनी है। एडुर्का के जावा जे 2 ईई और एसओए प्रशिक्षण और प्रमाणन पाठ्यक्रम आपको हाइबरनेट और स्प्रिंग जैसे विभिन्न जावा फ्रेमवर्क के साथ कोर और उन्नत जावा अवधारणाओं दोनों के लिए प्रशिक्षित करने के लिए डिज़ाइन किया गया है।

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया इस ब्लॉग के टिप्पणी अनुभाग में इसका उल्लेख करें और हम जल्द से जल्द आपके पास वापस आ जाएंगे।