इस सेक्शन में हम देखेंगे कि C++ में नेमस्पेस और क्लास के बीच क्या अंतर हैं। नेमस्पेस और क्लास दो अलग-अलग कॉन्सेप्ट्स हैं। क्लासेस डेटा टाइप्स हैं। क्लासेस मूलतः स्ट्रक्चर्स का एक्सटेंडेड वर्जन हैं। क्लासेस डेटा मेंबर्स और फंक्शन्स को मेंबर्स के रूप में समाहित कर सकते हैं, लेकिन नेमस्पेस वेरिएबल्स और फंक्शन्स को एक साथ ग्रुप करके समाहित कर सकते हैं।
नेमस्पेस को ऑब्जेक्ट्स के रूप में नहीं बनाया जा सकता। इस कॉन्सेप्ट का उपयोग समान फंक्शन्स, क्लासेस, वेरिएबल्स आदि को अलग करने के लिए अतिरिक्त जानकारी के रूप में किया जाता है। समान नाम वाले वेरिएबल्स, फंक्शन्स को अलग-अलग नेमस्पेस में रखा जा सकता है।
अब आइए नेमस्पेस और क्लास के कुछ महत्वपूर्ण अंतरों को इंगित करें।
नेमस्पेस का उपयोग आइडेंटिफायर्स का एक ग्रुप बनाने के लिए किया जाता है ताकि वे क्लैश न करें। क्लास का उपयोग करके, हमें उस क्लास का एक इंस्टेंस बनाना होता है, लेकिन नेमस्पेस के लिए यह सच नहीं है।
नेमस्पेस के लिए हम 'using' डिक्लेरेशन का उपयोग करते हैं। क्लासेस के लिए यह संभव नहीं है जब तक कि हम उससे डेराइव न कर रहे हों।
हम नेमस्पेस को फिर से खोल सकते हैं और ट्रांसलेशन यूनिट्स में अधिक एलिमेंट्स जोड़ सकते हैं। यह क्लासेस का उपयोग करके नहीं किया जा सकता।
namespace my_namespace { int function1(); } namespace my_namespace { int function1(); }क्लास के लिए निम्नलिखित कोड ठीक नहीं है:
class my_class { int function1(); }; class my_class { int function1(); };हम अनाम नेमस्पेस का उपयोग कर सकते हैं, जो ठीक है, लेकिन हम अनाम क्लास का उपयोग नहीं कर सकते क्योंकि इससे एरर होगी।
namespace{ //Legal int function1(); }; class { //create error int function1(); };