नाम एक गैर राजधानी अक्षरांकीय चरित्र के बाद अंडरस्कोर और एक डबल अंडरस्कोर सहित न केवल आरक्षित हैं वैश्विक नामस्थान में। इसका कारण यह है कि कुछ प्रणालियों पर कुछ नामों को अग्रणी अंडरस्कोर प्राप्त करने की आवश्यकता होती है या इन्हें पहले से ही अंतर्निहित ऑपरेटिंग सिस्टम और/या इसकी सी लाइब्रेरी द्वारा उपयोग किया जाता है। अज्ञात नेमस्पेस में नामों में यह समस्या नहीं है।
उसने कहा, मैं हमेशा सोच रहा हूं कि लोग बदसूरत नामों का उपयोग करने के लिए इतने उत्सुक क्यों हैं! जब तक कि मैं मानक लाइब्रेरी कार्यान्वयन मोड में नहीं हूं (जहां मुझे प्रभावी रूप से बदसूरत नामों का उपयोग करना पड़ता है, न कि मैं उपयोगकर्ता नामों के साथ संघर्ष करता हूं) मैं हमेशा सोच रहा हूं कि क्या मैं अपने कोड में कहीं भी एक अग्रणी अंडरस्कोर का उपयोग करके कुछ गलत कर रहा हूं! ऐसे दुर्लभ मौके हैं जहां एक अग्रणी अंडरस्कोर की आवश्यकता होती है (उदाहरण के लिए _exit()
पर कॉल करते समय या std::bind()
के प्लेसहोल्डर का उपयोग करते हुए) लेकिन आम तौर पर उपयोगकर्ताओं को उन्हें छूना नहीं चाहिए: न ही उनका उपयोग करें और उन्हें परिभाषित न करें।
स्रोत
2012-01-01 11:18:44
बेस्ट पर, वास्तव में, वास्तव में खराब रूप होगा यदि आपने अपने किसी भी परिवर्तनीय नाम पर अग्रणी अंडरस्कोर का उपयोग करने का निर्णय लिया है। – paulsm4
@ paulsm4 यह है कि बूस्ट बाइंड लाइब्रेरी तर्क प्लेसहोल्डर्स को परिभाषित करने के लिए करता है ('_1',' _2', आदि ...)। – StackedCrooked
एक अनाम नामस्थान विशेष रूप से विशेष नहीं है; यह केवल एक सामान्य, विशिष्ट नामित नेमस्पेस है जिसका उपयोग निर्देश का उपयोग करके एक निहित है जो इसके नामों को संलग्न नामस्थान में इंजेक्ट करता है। हालांकि, यहां एक दिलचस्प सवाल है: क्या इस नाम का उल्लंघन करने के माध्यम से वैश्विक नामस्थान में नाम लाया जा सकता है? –