Если не указано иное, объекты создаются с помощью конструктора по умолчанию, только если он доступен.
И, например, целые числа не инициализируются.
Это распространенный источник огромных проблем и ошибок, потому что он может иметь любое значение.
Таким образом, правило таково: всегда инициализируют переменные , а для класса вы делаете это в списке инициализации
class A
{
private:
int i;
float f;
char * pC;
MyObjectType myObject;
public:
A() : // the initialisation list is after the :
i(0),
f(2.5),
pC(NULL),
myObject("parameter_for_special_constructor")
{}
}
}