根据这篇回答所述,在 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