c++对象数组问题

想做一个学生类 通过构造函数导入学生的信息 我用的是定义数组指针来实现
Student(){}//构造函数
Student *A=new Student[n];

现在的问题是 初始化的时候是不是这N个对象都同时调用那构造函数 如果构造函数有参
Student(double,double);//有参构造函数
那么该如何写这式子呢?
请回答详细点 可能的话给点例子 回答满意再加分10

定义的类要声明数组的话,必须要定义类的默认构造函数。
例如
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)};
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-02
第一个问题:在构造动态数组的时候N个对象都会调用构造函数,这点你测试一下就知道了,在构造函数里写一句输出,
Student()
{
cout<<"test"<<endl;
}
第二个问题:在C++里是不支持直接构造带参数的数组,如果一定要这样做,有个折中的办法,
Student *s[n];
for (int i =0;i<n;i++)
{
s[i] = new Student(i,i);
}
相似回答