想要建立一个对象数组,内放5个学生的数据(学号成绩),请问我的程序错在哪里?

#include<iostream>
using namespace std;
class Student
{
public:
Student(int,int);
void display();
private:
int number;
int score;
};

Student::Student(int a,int b)
{
number=a;
score=b;
}
void Student::display()
{cout<<number<<":"<<score<<endl;} 
int main()
{

Student* p;
p= new Student[5]; //为什么总是提示没有合适的构造函数,这里我是想动态建立一个包含5个对象对象数组,并用指针指向首对象,并不是想调用构造函数
Student student[5]={Student(1,89),Student(2,92),Student(3,98),Student(4,95),Student(5,81)}; 

int i;
for(i=0;i<5;i=i+2)
{

p[i].display();

}

cout<<endl;
delete p;
return 0;
}

慕容3067478
浏览 381回答 3
3回答

长风秋雁

构造函数不对,是两个参数(int,int)。所有你得:p=new Student(1,1)[5];否则自己加一个构造函数Student::Student();然后再加一个输入的函数input(...);才能p=new Student()[5];*(p+1).input(...);

元芳怎么了

Student*&nbsp;=&nbsp;new&nbsp;Student[5];要那样开辟内存,你必须要有默认参数的构造函数,就是说class&nbsp;Student{public:Student();&nbsp;//&nbsp;默认参数的构建(比如,默认name,0分)Student(int,int);void&nbsp;display();private:&nbsp;int&nbsp;number;&nbsp;int&nbsp;score;};

桃花长相依

Student(){}自己再加一个空构造函数,当你自己定义构造函数时,系统不再生成默认空构造函数!
打开App,查看更多内容
随时随地看视频慕课网APP