在C和C++中,所有靜態變量默認初始化爲零。爲什麼要在C++中初始化靜態類變量?
這不是靜態類數據成員的情況。這是爲什麼?
#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:實際上,在執行動態初始化之前,標準顯式地爲所有全局變量清零內存......除了受字面值影響的內置函數,我認爲可以直接影響(在因爲它是不可觀測的。 –