定义的类要声明数组的话,必须要定义类的默认构造函数。
例如
class Student
{
protected:
int i;
public:
Student():i(0){}
/*这里就是默认构造函数。所谓默认构造函数就是没形参的构造函数*/
Student(int f):f(i){}
};
如果你的Student没默认的构造函数
Student *A=new Student[n];
这一句就会报错。
同样Student P[10]也会报错;
对于这种赋值只能一个一个的赋值。也就是动态分配的数组;
对于不是动态分配的则可以这样
Student P[10]={1,2,3,8};
对于多形参的则必须这样了
Student P[12]={Student(1,9),Student(8,7)};
第一个问题:在构造动态数组的时候N个对象都会调用构造函数,这点你测试一下就知道了,在构造函数里写一句输出,
Student()
{
cout<<"test"<
第二个问题:在C++里是不支持直接构造带参数的数组,如果一定要这样做,有个折中的办法,
Student *s[n];
for (int i =0;i
s[i] = new Student(i,i);
}