08-静态成员与友元
题目描述
学生类定义如下:
class Student {
private:
int id; //学号
int score; //成绩
static int maxscore; //最高分数
static int maxid; //最高分数学生学号
public:
Student(int ti=0, int ts=0)
:id(ti), score(ts)
{}
static void findMax(Student & st); //寻找最高成绩和学号
static int getMaxScore(); //返回最高成绩
static int getMaxID(); //返回最高成绩的学号
};
输入一组学生学号和成绩,用上述静态成员求最高成绩和对应学号
输入
第一行输入n表示有n个学生
接着输入n行,每行包括两个数据,表示学号和成绩
输出
调用静态成员函数输出学号和最高成绩,格式看样例
输入样例
3
1002 68
1023 54
1045 32
1002–68
#include <iostream>
using namespace std;
class student
{
int id;
int score;
static int maxscore;
static int maxid;
public:
student(int ti=0,int ts=0):id(ti),score(ts){}
//student():id(0),score(0){}
//student(int ti,int ts):id(ti),score(ts){}
static void findmax(student &st);
static int getmaxscore();
static int getmaxid();
int getid()
{return id;}
int getscore()
{return score;}
};
int student::maxscore=0;
int student::maxid=0;
int student::getmaxscore()
{return maxscore;}
int student::getmaxid()
{return maxid;}
void student::findmax(student &st)//静态成员函数只能使用静态数据成员!
{
if(st.getscore()>maxscore)
{
maxscore=st.getscore();//所以这里要st.getscore() 不可以直接使用
maxid=st.getid();
}
}
int main()
{
int n,id,score;
cin>>n;
while(n--)
{
cin>>id>>score;
student a(id,score);
student::findmax(a);
}
cout<<student::getmaxid()<<"--"<<student::getmaxscore()<<endl;
return 0;
}