CおよびC++では、すべての静的変数はデフォルトでZEROに初期化されます。なぜ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:実際には、標準の下で(リテラル値が、私が思うものは直接影響を受ける可能性が影響されたそれらの組み込み関数から離れて...動的初期化を実行する前に、すべてのグローバル変数のためのメモリをゼロについて明示的ですそれは観察できないからです)。 –