题目是创建一个学生类,包含名字,学号,分数,从键盘输入学生个数及其他信息,最后输出名字,学好,成绩,并求出平均分。
我认为是由于创建了对象数组s1[10],只用到一部分,剩余部分没有创建,所以析构时出错。求解答。
#include
#include
#include
using namespace std;
class s //定义一个学生类 包含名字 学号 分数 输出/入函数
{
char *name;
int no;
public:
int sc; //sc为分数 no为学号
sets(char *n,int nu,int s) //从键盘获取信息的函数
{
name=new char[10];
assert(name!=NULL);
strcpy(name,n);
no=nu;
sc=s;
}
~s()
{
delete[]name;
cout<<"destructor"<<endl;//检测是否正常析构
}
void show()
{
cout<<name<<" "<<no<<" "<<sc<<endl;
}
};
int main()
{
int m,n,i,r,su;//r为学生人数,su为学生分数总和
cin>>r;
s s1[10]; //不确定学生人数,创建一个对象数组(假设学生人数小于11)
char *na;//sets函数的实参,表示学生名字
for(i=0;i<r;i++)
{
na=new char[10];
assert(na!=NULL);
cin>>na>>m>>n;
s1[i].sets(na,m,n);
delete[]na;
}
for(i=0;i
{s1[i].show();}
cin>>su;
return 0;
}