सी और सी ++ में सभी स्थैतिक चर डिफ़ॉल्ट रूप से शून्य पर प्रारंभ किए जाते हैं।मुझे सी ++ में स्थिर वर्ग चर क्यों शुरू करना चाहिए?
यह स्थिर वर्ग डेटा सदस्यों का मामला नहीं है। ऐसा क्यों है?
#include <iostream>
using namespace std;
int var;
class MyClass
{
public:
static int classVar;
};
int MyClass::classVar = 0; // Why I have to init it here?
int main(void)
{
cout << ::var << endl; // this is initalized to ZERO by default
static int var;
cout << var << endl; // and this also is initalized to Zero
cout << MyClass::classVar << endl;
return 0;
}
आपको यकीन नहीं है ** var ** को 0 से शुरू किया गया है। यह संभव है, कभी-कभी संभावित, लेकिन सुनिश्चित नहीं है। –
@AlessandroPezzato: दरअसल, मानक गतिशील प्रारंभिक निष्पादन से पहले सभी वैश्विक चर के लिए स्मृति को शून्य करने के बारे में स्पष्ट है ... उन अंतर्निर्मितों के अलावा जिनके लिए एक शाब्दिक मूल्य प्रभावित होता है, मुझे लगता है कि वे सीधे प्रभावित हो सकते हैं (नीचे जैसा कि नियम है) क्योंकि यह अनावश्यक है। –