假设我有一个C ++类,我没有写任何构造函数。这两行之间有什么区别:
1. Complex* parray = new Complex[10];
2. Complex* parray2 = new Complex[10]();
如果将提供构造函数,行为是否会改变。
答案 0 :(得分:7)
这取决于Complex
的类型。如果它是POD,例如,
struct Complex
{
double re, im;
};
然后1.将导致数据成员没有初始化,并且2.将导致这些值被初始化,这意味着零初始化。如果数据成员是用户定义的类型,则在以下两种情况下都将调用它们的默认构造函数:
struct Complex
{
std::string re, im;
};