设计一个学生类student,除了包括no(学号)、name(姓名)和deg(成绩)数据成员外,有两个静态变量sum和num ,分别存放总分和人数,另有一个构造函数,一个普通成员函数disp()和一个静态成员函数avg(),用于计算平均分。在主函数中,定义若干个学生对象,并初始化,包括学号、姓名、成绩,要求输出这些学生的数据并计算平均分。(提示,在构造函数和析构函数中要考虑静态变量num的变化。)
#include <iostream>
#include<string>
using namespace std;
class student
{
private:
static double sum;
static int num;
int no;
string name;
double deg;
public:
student():no(0),name("nobody"),deg(0)
{num++;sum+=deg;}
void display();
static double avg();
~student()
{ num--;sum-=deg;}
};
double sum=0;
double student::avg()
{
return sum/num;
}
void student::display()
{
cout<<"输出学生信息:"<<endl
<<"学号:"<<no<<endl
<<"姓名:"<<name<<endl
<<"成绩:"<<deg<<endl;
}
int main()
{
student s1(1001,"zhangsan",95.5),s2(1002,"lisi",92.5),s3(1003,"jane",88);
s1.display();
s2.display();
s3.display();
cout<<"avg"<<student::avg()<<endl
<<s2.avg()<<endl;
return 0;
}
你的student类只有缺省构造函数,没有带三个参数的构造函数,所以报错
还有点小问题,给你改了下:
#include <iostream>