इससे पहले कि आप इसे डुप्लिकेट के रूप में चिह्नित करना शुरू करें, मैंने पहले से ही this पढ़ा है। लेकिन यह मेरे प्रश्न का उत्तर नहीं देता है। लिंक किए गए प्रश्न सी ++ 98 & सी ++ 03 के बारे में बात करते हैं लेकिन मेरा प्रश्न डिफ़ॉल्ट कन्स्ट्रक्टर सी ++ 11 द्वारा पेश किया गया है।क्या यह गारंटी है कि डिफॉल्ट कन्स्ट्रक्टर स्वचालित रूप से प्रकारों में 0 से निर्मित प्रारंभ होता है?
निम्नलिखित कार्यक्रम पर विचार करें (लाइव डेमो here देखें):
#include <iostream>
struct Test
{
int s;
float m;
Test(int a,float b) : s(a),m(b)
{ }
Test()=default;
}t;
int main()
{
std::cout<<t.s<<'\n';
std::cout<<t.m<<'\n';
}
मेरा प्रश्न है कि करने के लिए डिफ़ॉल्ट 0 से संकलक यहाँ हमेशा प्रकार में बनाया initializes द्वारा प्रदान की डिफॉल्ट की निर्माता है सी ++ 11 & सी + +14 जब वे class
& struct
सदस्य हैं। क्या यह व्यवहार सी ++ 11 मानक द्वारा गारंटीकृत है?
कौन बंद करने के लिए मतदान किया? क्यूं कर? – Destructor
[विकी की डिफ़ॉल्ट-प्रारंभिकरण पर प्रविष्टि] देखें (http://en.cppreference.com/w/cpp/language/default_initialization) – jaggedSpire
हालांकि, आपने वैश्विक रूप से 't' घोषित किया है, इसलिए यह मान/शून्य प्रारंभ होगा वैसे भी IIRC – melak47