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