对象数组 - 初始化

时间:2014-01-03 13:27:22

标签: c++

假设我有一个C ++类,我没有写任何构造函数。这两行之间有什么区别:

1. Complex* parray = new Complex[10]; 
2. Complex* parray2 = new Complex[10]();

如果将提供构造函数,行为是否会改变。

1 个答案:

答案 0 :(得分:7)

这取决于Complex的类型。如果它是POD,例如,

struct Complex
{
  double re, im;
};

然后1.将导致数据成员没有初始化,并且2.将导致这些值被初始化,这意味着零初始化。如果数据成员是用户定义的类型,则在以下两种情况下都将调用它们的默认构造函数:

struct Complex
{
  std::string re, im;
};