实现功能1:输出1,3,5的成员数据
实现功能2:用指向对象的指针做函数参数,找出其中成绩最高者的学号并输出
不过我想说的主要是主函数中的代码片段,关于指针如何调用类函数。
int main()
{
Student s[5]={Student("123",70.1),Student("456",60.2),Student("789",80.5),Student("987",90.6),Student("321",60.1)};
Student *p=s;//这里没用取地址符的原因是数组名字就是数组首地址
//s[5].display(p);方法一
//s[5].max(p);
//p->display(p);方法二
//p->max(p);
p[5].display(p);//方法三
p[5].max(p);
return 0;
}
以上示例均可调用类函数,但在通过指针调用类函数的两种方法中又有一些不同。当我们用“.”调用时,一定要记着后面的数组[n],但通过->调用时可以不加[n],可以直接指向。
全部代码:
#include <iostream>
#include <string>
using namespace std;
class Student{
private:
string number;
double score;
public:
Student(string n,double s)
{
number=n;
score=s;
}
void display(Student *p)
{
for(int i=0;i<5;i++)
if(i%2==0)
{
cout<<"学号:"<<p[i].number<<" "<<"成绩:"<<p[i].score<<endl;
}
}
void max(Student *p)
{
double max_score;
string max_number;
for(int i=0;i<4;i++)
if(p[i].score>p[i+1].score)
{
max_score=p[i].score;
max_number=p[i].number;
}
cout<<"最大学号:"<<max_number<<" "<<"最大成绩:"<<max_score<<endl;
}
};
int main()
{
Student s[5]={Student("123",70.1),Student("456",60.2),Student("789",80.5),Student("987",90.6),Student("321",60.1)};
Student *p=s;
//p->display(p);
//p->max(p);
p[5].display(p);
p[5].max(p);
return 0;
}