मैं नहीं जानता कि क्या परिवर्तन (या कैसे मानक से पहले किया गया था) के आसपास रेश्नल्स, लेकिन यह कैसे है, मूल रूप से डिफ़ॉल्ट-प्रारंभ पर या तो एक उपयोगकर्ता परिभाषित निर्माता कॉल करने या कुछ भी नहीं कर रही है (के बहुत सारे है यहां हाथ से लहराते हुए: यह प्रत्येक सबबोजेक्ट पर पुनरावर्तित रूप से लागू होता है, जिसका अर्थ है कि एक डिफ़ॉल्ट कन्स्ट्रक्टर के साथ उप-प्रोजेक्ट प्रारंभ किए जाएंगे, कोई उपयोगकर्ता परिभाषित कन्स्ट्रक्टर वाले उप-तत्वों को अनियमित नहीं छोड़ा जाएगा)।
के प्रकार टी का एक उद्देश्य शून्य से प्रारंभ का अर्थ है:
- अगर टी है एक स्केलर प्रकार (3.9), ऑब्जेक्ट को 0 (शून्य) के मान में सेट किया जाता है जो टी में परिवर्तित होता है;
- यदि टी गैर-यूनियन श्रेणी का प्रकार है, तो प्रत्येक गैर-स्टेटिक डेटा सदस्य और प्रत्येक बेस-क्लास सबोबजेक्ट ज़ीरोइनिलाइज्ड होता है;
- यदि टी एक यूनियन प्रकार है, तो ऑब्जेक्ट का पहला नाम डेटा सदस्य 89) शून्य-प्रारंभिक है;
- यदि टी एक सरणी प्रकार है, तो प्रत्येक तत्व शून्य-प्रारंभ होता है;
- यदि टी एक संदर्भ प्रकार है, तो कोई प्रारंभिकता नहीं की जाती है।
प्रकार टी की एक वस्तु डिफ़ॉल्ट आरंभ करने के लिए इसका मतलब है:
- अगर टी एक गैर पॉड वर्ग प्रकार (खंड 9), टी के लिए डिफ़ॉल्ट निर्माता कहा जाता है (और आरंभीकरण बीमार बनाई है अगर टी में कोई सुलभ डिफ़ॉल्ट कन्स्ट्रक्टर नहीं है);
- यदि टी एक सरणी प्रकार है, तो प्रत्येक तत्व डिफ़ॉल्ट-प्रारंभिक है;
- अन्यथा, ऑब्जेक्ट शून्य-प्रारंभिक है।
के प्रकार टी का एक उद्देश्य मूल्य आरंभ कर देगा का अर्थ है:
- अगर टी एक वर्ग प्रकार (खंड 9) एक उपयोगकर्ता के घोषित निर्माता (12.1) के साथ है, तो टी के लिए डिफ़ॉल्ट निर्माता कहा जाता है (और यदि टी में कोई सुलभ डिफ़ॉल्ट कन्स्ट्रक्टर नहीं है तो प्रारंभिकता खराब हो गई है);
- यदि टी उपयोगकर्ता द्वारा घोषित कन्स्ट्रक्टर के बिना गैर-यूनियन क्लास प्रकार है, तो प्रत्येक गैर स्थैतिक डेटा सदस्य और टी के बेस-क्लास घटक मूल्य-प्रारंभिक होते हैं;
- यदि टी एक सरणी प्रकार है, तो प्रत्येक तत्व मूल्य-प्रारंभिक है;
- अन्यथा, वस्तु शून्य आरंभ नहीं हो जाता
एक प्रोग्राम है जो डिफ़ॉल्ट-प्रारंभ या संदर्भ प्रकार का एक संस्था के मूल्य-आरंभीकरण के लिए कहता है विकृत हैं। यदि टी एक सीवी-योग्य प्रकार है, तो टी का सीवी-अयोग्य संस्करण ज़ीरोइनिलाइजेशन, डिफ़ॉल्ट-प्रारंभिकरण, और मूल्य-प्रारंभिकरण की इन परिभाषाओं के लिए उपयोग किया जाता है।
नए सी ++ 11 मानक का प्रासंगिक हिस्सा 8.5 ("प्रारंभकर्ता") खंड 5,6,7 है। –
शायद यह लोगों को डिफ़ॉल्ट सीटीआर का उपयोग करने का विकल्प देता है या नहीं। सी ++ के पुराने संस्करण में जब कोई पैरामीटर नहीं थे तो आमतौर पर ब्रैकेट को याद किया जाता था। तो नए विकल्प पर ब्रैकेट होने से कम विरासत कोड प्रभावित होगा। – QuentinUK
मैं इसे बदल नहीं सकता, बल्कि सुधार करता हूं। यह कम से कम संदर्भ के संदर्भ में समझ में आता है std :: map जहां [] द्वारा बनाए गए मान मूल्य intialized हैं, इसलिए उदा। std :: map सभी यू * 0 –
PlasmaHH