En C y C++ todas las variables estáticas se inicializan de forma predeterminada en CERO.¿Por qué debería inicializar las variables de clase estáticas en C++?
Este no es el caso de los miembros de datos de clase estáticos. ¿Porqué es eso?
#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;
}
No está seguro de que ** var ** esté inicializado en 0. Es posible, a veces probable, pero no estoy seguro. –
@AlessandroPezzato: en realidad, el estándar es explícito sobre la puesta a cero de la memoria de todas las variables globales antes de ejecutar la inicialización dinámica ... aparte de las integradas a las que afecta un valor literal, las que creo pueden verse afectadas directamente (bajo como-si regla) ya que es inobservable. –