GCC 3.2.2 なんですけど、
struct A {
 int a; A() { }
};
struct B {
 int b; B() : b() { }
};
int main()
{
 cout << A().a << endl; // 無茶苦茶な値
 cout << B().b << endl; // 0
 int * p = new int;
 cout << *p << endl; // 無茶苦茶な値
 delete p;
 p = new int[1];
 cout << p[0] << endl; // 無茶苦茶な値
 delete [] p;
 p = new int();
 cout << *q << endl; // 0
 delete p;
}
ってなりました。
初期化子入れないとデフォルトコンストラクタが呼ばれる、
と思ってたけど、実際にデフォルトコンストラクタを指定すると挙動が違うんですね。
これって、int とかだと明示的に指定しないと
デフォルトコンストラクタが呼ばれないという仕様なんでしょうか?