このanswerのC++ 03では、()
が省略された場合、PODタイプはデフォルトで初期化されます。それ以外の場合は、値が初期化されます。デフォルト初期化と値の初期化
// POD type
struct foo {
int x;
};
// value-initialized
new foo();
しかし、ユーザー定義のコンストラクタが用意されている場合、下記のいずれかのオブジェクトは、デフォルトまたは値初期化とみなされますでしょうか?
// non-POD type
struct bar {
bar(int x = 0):x(x) {}
int x;
};
new bar();
new bar(42);
あなたの例では、 'bar'のコンストラクタを呼び出すと、' x'の初期化時に値が返されます。 – Chad