Фактически, по умолчанию он вообще не инициализируется. Значение, которое вы видите, представляет собой просто некоторые значения мусора в памяти, которые использовались для выделения.
Если вы хотите установитьзначение по умолчанию, вам нужно будет запросить его в конструкторе:
class Foo{
public:
Foo() : bar() {} // default bool value == false
// OR to be clear:
Foo() : bar( false ) {}
void foo();
private:
bool bar;
}
ОБНОВЛЕНИЕ C ++ 11:
Если вы можете использовать компилятор C ++ 11, вы можетевместо этого используется конструкция по умолчанию (большую часть времени):
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.
}