我知道:
int* a= new int[3]();
将数组初始化为0。
但如果我有一个结构如下所示会发生什么:
struct EmpCode
{
int i;
};
struct emp
{
int id;
string name;
EmpCode code;
};
我做new emp *employee = new emp[3]();
这里的值也被初始化了(注意我还没有定义构造函数)。如果是,那么这是由编译器调用的某种默认构造函数吗?
答案 0 :(得分:3)
是的,当你执行emp* employee = new emp[3]();
时,你会得到值初始化,这会使内置函数的初始化减少到零。
值初始化是在C ++ 03中引入的,因为C ++ 98规则引起了非常奇怪的行为。这是C ++ 03中唯一的新功能。据我所知,这是由Andrew Koenig提出的。
答案 1 :(得分:-2)
不,您需要定义默认构造函数。