मानक सी ++ लाइब्रेरी में सभी नाम std::ios_base::Init
को छोड़कर लोअरकेस हैं। ऐसा क्यों है?std :: ios_base :: इनिट अपरकेस में "इनिट" क्यों है?
उत्तर
iostream कक्षाएं आप देख सकते हैं कि ios_base
मूल रूप से उपस्थित नहीं था का एक प्रारंभिक draft में, basic_ios
आधार वर्ग था और Init
और अन्य सदस्यों, जो बाद में ios_base
में अलग हो गए थे लिए जिम्मेदार था।
basic_ios
भी था (और still has) एक init
समारोह, और जब दो नाम जरूरी अलग होने के लिए नहीं था, शायद कोशिश करते हैं और भ्रम की स्थिति यह वर्ग Init
और समारोह init
नाम के लिए निर्णय लिया गया से बचने के लिए। इसके अलावा, निम्नलिखित की तरह इस तरह के अंतर कुछ बिना आवश्यक हो गया होता जब वर्ग का उपयोग कर:
struct ios_base
{
struct init{};
void init();
};
ios_base::init i1; // error
struct ios_base::init i2; // ok
एक अलग वर्ग मानक धाराओं आरंभ करने के लिए जिम्मेदार करने का विचार कम से कम CFront 3.0 को जाता है, के रूप में देखा जा सकता है Iostream_init
द्वारा this शीर्षलेख में। कुछ बिंदु पर यह निर्णय लिया गया कि न केवल कक्षा को ios
/basic_ios
/ios_base
का सदस्य बनाएं, लेकिन इसका नाम Init
रखा जाना चाहिए।
किसी भी मामले में दोनों को असंतोष करना समझ में आता है, इस तथ्य पर विचार करते हुए कि उन्हें अंततः अलग-अलग वर्गों में रखा गया था। वे इसके बजाय पूरी तरह से अलग नाम चुन सकते थे, लेकिन संभावित रूप से Init
/init
को कक्षा और कार्य करने का वर्णन करने के लिए सबसे अच्छा अर्थपूर्ण विकल्प माना जाता था, और यह भी एक मौका है कि यह पुराने Iostream_init
की नकल कर रहा था, जिसके कारण किसी कारण से भी शुरू होता है एक अपरकेस I
।
"है" बहुत मजबूत है, लेकिन हां, बेस क्लास के सदस्य वर्ग के समान नाम के साथ एक सदस्य कार्य उस सदस्य वर्ग को छुपाएगा। – hvd
हम्म ... पूर्व-मानक libstdC++ कार्यान्वयन का निरीक्षण, जो सी ++ 9 8 मानक के विकास के विकास में था, वहां एक बिंदु था जहां 'आईओएस' कक्षा थी जिसमें 'इनिट' और 'इनिट' दोनों शामिल थे। उस बिंदु पर, अलग-अलग नाम बिल्कुल जरूरी थे, न कि सिर्फ अच्छा है। – hvd
@ एचवीडी मैंने आपकी टिप्पणी के उत्तर का जवाब दिया है, इनिट/इनिट भेद वास्तव में दूर के अतीत से एक आर्टेफैक्ट प्रतीत होता है। मैं यह इंगित करना चाहता हूं कि एक ही नाम के साथ एक समारोह और एक वर्ग अभी भी एक ही दायरे में खुशी से सह-अस्तित्व में रह सकता है। – user657267
- 1. एनजी-इनिट और डेटा-एनजी-इनिट
- 2. std :: ios_base :: खाया और std :: ios_base :: TRUNC
- 3. पाइथन इनिट
- 4. एनजी-इनिट
- 5. गिट इनिट को समझना
- 6. स्टोरीबोर्ड और कस्टम इनिट
- 7. स्विफ्ट इनिट objecitve-C
- 8. एक इनिट विधि
- 9. रेफ्लक्स ट्रिगर इनिट
- 10. `std :: ios_base :: init :: init() '
- 11. सर्वलेट इनिट विधि जिसमें सिंक्रनाइज़ ब्लॉक है
- 12. एक सरणी में ब्रेसिड-इनिट-सूची का असाइनमेंट सही है?
- 13. वर्डप्रेस: इनिट हुक क्यों कई बार आह्वान किया जाता है?
- 14. एनएसवीव प्रारंभिकरण: -इनिट: बनाम -वेकफ्रॉमनिब:
- 15. एएमएम एचटीपी अनुरोध पर इनिट
- 16. एकाधिक एनजी-इनिट स्कोप मुद्दे
- 17. फायरबेस के साथ इनिट फायरबेस,
- 18. क्यों std :: ios_base :: अनदेखा() EOF बिट सेट करता है?
- 19. AJAX में री-इनिट को रोकें
- 20. स्प्रिंग कंट्रोलर (एनोटेशन संस्करण) में इनिट विधि
- 21. ब्रांडेड-इनिट-लिस्ट एक कन्स्ट्रक्टर आमंत्रण बनाम फ़ंक्शन कॉल में अलग-अलग व्यवहार क्यों करती है?
- 22. उद्देश्य-सी डॉट सिंटेक्स और इनिट
- 23. स्क्रैप स्पाइडर चलाते समय स्कैरेड इनिट त्रुटि
- 24. कुछ एएमएक्स इनिट कमांड केवल जीयूआई मोड
- 25. रीयलम स्विफ्ट इनिट का उपयोग कैसे करें
- 26. लिनक्स इनिट प्रक्रिया का स्रोत कोड
- 27. माइग्रेट करने से पहले फ्लाईवे मेवेन इनिट
- 28. स्विफ्ट 3 और एक्सकोड 8 - इनिट
- 29. स्प्रिंग फ्रेमवर्क डिफ़ॉल्ट-आलसी-इनिट सभी बीन्स
- 30. आईओएस सबक्लास UICollectionViewCell कस्टम इनिट विधि
मैं कहूंगा कि यह केवल इसलिए है क्योंकि यह आईओ धाराओं के लिए बहुत महत्वपूर्ण प्रारंभिक, रखरखाव और सफाई कार्य करता है। यह उस संबंध में अद्वितीय है, इसलिए इसे पूंजी मिली। – IVlad
पिछड़ा संगतता। –
क्योंकि नामकरण सम्मेलन और वास्तव में सी ++ में नाम एक पूर्ण शंबल हैं, जैसे कि वे सी – EJP