从这个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