De hecho, por defecto no se inicializa en todas. El valor que ve es simplemente algunos valores de basura en la memoria que se han utilizado para la asignación.
Si desea establecer un valor por defecto, tendrá que pedir que en el constructor:
class Foo{
public:
Foo() : bar() {} // default bool value == false
// OR to be clear:
Foo() : bar(false) {}
void foo();
private:
bool bar;
}
ACTUALIZACIÓN C++ 11:
Si puede utilizar un C++ 11 compilador, ahora se puede construir en su lugar por defecto (la mayor parte del tiempo):
class Foo{
public:
// The constructor will be generated automatically, except if you need to write it yourself.
void foo();
private:
bool bar = false; // Always false by default at construction, except if you change it manually in a constructor's initializer list.
}
¿Por qué no puedes inicializarlo en el constructor? – Kena
porque el constructor se puede llamar más de una vez, no puedo cambiar esa rutina porque eso carecería de una mayor paz de software :( – Christoferw
¿Cómo se llamaría alguna vez al constructor más de una vez? – jalf