2012-08-15 16 views
6

संभव डुप्लिकेट:
Why is 'using namespace std;' considered a bad practice in C++?शैली और नामस्थान

मैं कुछ कोड उदाहरण हैं, जहां लोगों के लिए उपयोग देखा है, कहते हैं, std::cout जबकि अन्य स्थानों में लोगों के लिए शीर्ष पर using namespace std; होगा इसके बजाय सादगी। जिसे आम तौर पर पसंद किया जाता है?

+2

एक और विकल्प 'std :: cout' का उपयोग कर रहा है। – hmjd

+6

[नामस्थान स्टेड का उपयोग क्यों किया जा रहा है; 'एक बुरा अभ्यास माना जाता है?] (Http://stackoverflow.com/questions/1452721/why-is-using-namespace-std-Considered-a-bad-practice-in-c) – chris

+3

यदि आप एक साधारण नियम चाहते हैं: 'उपयोग' निर्देशों का उपयोग न करें, यानी (यानी 'नामस्थान एबीसी का उपयोग करना;'); और अनदेखी और एडीएल नियंत्रण के लिए केवल 'उपयोग' घोषणाओं का उपयोग करें (उदा। 'बेस :: foo' का उपयोग करके)। हालांकि, स्रोत कोड को साफ रखने के लिए नेमस्पेस उपनाम का उपयोग करें। –

उत्तर

3

उपयोग std::cout किसी भी संभावित से बचने के लिए नाम संघर्ष यदि आप using namespace std; का उपयोग करके उपयोग करते हैं तो आप अपने वैश्विक नामस्थान को सभी std नाम से पॉप्युलेट करेंगे जो आपकी टीम में किसी अन्य व्यक्ति या आपके द्वारा लिखे गए वर्ग या फ़ंक्शन नामों के साथ संघर्ष कर सकता है। आप पहले से ही इस के बारे में पता हो सकता है - यह अच्छी तरह से C++ faq lite में और SO

2

कोड लिखते समय मैं व्यक्तिगत नामस्थान संप्रदाय का व्यक्तिगत रूप से उपयोग करता हूं, उदाहरण के लिए std::string, इत्यादि। यह किसी भी व्यक्ति के लिए चीजों को स्पष्ट करता है जो इसे पढ़ता है, जो डेवलपर का उपयोग करना चाहता है।

मैंने देखा है निम्नलिखित कह रही:

लिखने यह एक बार, यह एक हज़ार बार पढ़ें ...

:)

0

सबसे पहले ध्यान दें कि आप कभी नहींusing namespace एक शीर्षक में होना चाहिए में समझाया गया है। इसका कारण यह है कि यह using को किसी भी स्रोत फाइल में लाएगा जिसमें इसे शामिल किया गया है।

यहां तक ​​कि स्रोत फ़ाइल स्तर पर भी मैं मानक पुस्तकालय कार्यों और वर्गों को स्पष्ट रूप से अर्हता प्राप्त करना पसंद करता हूं std::cout। हालांकि कुछ मामलों में मैं सुविधा के लिए विशिष्ट रूप से उपयोग करूँगा (उदाहरण के लिए using std:endl)। हालांकि मैं आमतौर पर स्पष्ट योग्यता पसंद करता हूं।

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