结构体必须有构造函数才能在用new动态分分配空间的时候进行初始化,如果要创建结构体数组,那么必须要有默认构造函数。类对象也是。
struct AAA
{
int data;
AAA(){};
AAA(int a):data(a){};
}
int main()
{
AAA *a=new AAA(); //调用默认构造函数
AAA *b=new AAA{1}; //调用AAA(int a)
AAA *c=new AAA[4]; //调用四次默认构造函数,如果此时没有默认构造函数,那么出错
return 0;
}
另外一个很白痴的问题是,构造函数的默认实参必须在形参列表的末尾。