即使没有定义构造函数,也可以通过appending()初始化struct

时间:2013-12-07 04:42:25

标签: c++ constructor

我知道:

int* a= new int[3]();

将数组初始化为0。

但如果我有一个结构如下所示会发生什么:

struct EmpCode
{
 int i;
};
struct emp
{
int id;
string name;
EmpCode code;
};

我做new emp *employee = new emp[3]();这里的值也被初始化了(注意我还没有定义构造函数)。如果是,那么这是由编译器调用的某种默认构造函数吗?

2 个答案:

答案 0 :(得分:3)

是的,当你执行emp* employee = new emp[3]();时,你会得到值初始化,这会使内置函数的初始化减少到零。

值初始化是在C ++ 03中引入的,因为C ++ 98规则引起了非常奇怪的行为。这是C ++ 03中唯一的新功能。据我所知,这是由Andrew Koenig提出的。

答案 1 :(得分:-2)

不,您需要定义默认构造函数。