9

以下两行有什么区别?

int *a = new int;

int *a = new int();
4

2 回答 2

13
int *a = new int;

a指向默认初始化的对象(在这种情况下是未初始化的对象,即根据标准该值是不确定的)。

int *a = new int();

a指向值初始化对象(在这种情况下是零初始化对象,即根据标准值为零)。

于 2013-10-06T21:15:25.827 回答
6

第一个变体默认初始化动态分配的,对于诸如不执行任何初始化int的内置类型。int

第二个变量值初始化它,这int意味着零初始化,给它 value 0

于 2013-10-06T21:15:05.930 回答