该程序目的在于找出在一群人中分数最大的所对应的人的信息;
如果使用数组来储存信息,那么将会浪费空间,因为有用的信息只是分数最大的那个;这时,明白在类在循环体中的生命期就可以很巧妙得得到分数最大的那个人;
如果在一个循环体中定义一个类,那么,该类得生命期只在那次循环。
while(1)
{
student s(…);
if(…)
break;
}
更多请运行以下程序:
输入人得ID 和成绩;
如果输入ID为0时出循环;
#include <iostream>
using namespace std;
class Mark{
int ID;
float grade;
public:
int getid(){return ID;}
float getgrade(){return grade; }
Mark(int id,float g):ID(id),grade(g){cout<<"The begin of ID:"<<ID<<endl; }
Mark():ID(0),grade(0){cout<<"The begin of ID:"<<ID<<endl; }
~Mark(){cout<<"The end of ID:"<<ID<<endl; }
bool operator>(const Mark &m){if(grade>m.grade)return 1;else return 0; }
};
ostream& operator<<(ostream& co,Mark &s){
co<<"ID:"<<s.getid()<<",成绩:"<<s.getgrade()<<endl;
return co;
}
int main()
{
int id,i=0;
float g;
Mark m;
while(1)
{
cout<<"第"<<i+1<<"次循环开始"<<endl;
cin>>id;
if(id==0)
break;
i++;
cin>>g;
Mark mk(id,g);
if(mk>m)
m=mk;
cout<<"第"<<i<<"次循环结束"<<endl;
}
cout<<"成绩最高的学生的信息为:"<<m<<endl;
return 0;
}