用C++编写程序:定义Student类和Score类,输出一个学生的成绩单(包括学号、姓名、高数、英语、政治、C++成绩)。 【要求:】使用友元的不同形式加以实现。 形式1:非成员函数作为友元函数 形式2:成员函数作为友元函数 形式3:友元类 形式4:类的组合
#include <string>
#include <iostream>
using namespace std;
class Student
{
public:
// 带参数的构造函数初始化对象
Student(int id, string name, double score)
: id(id), name(name), score(score)
{
count++;
total+=score;
}
// 修改分数成员函数
void ChangeScore(double newScore)
{
total +=newScore-score;
score=newScore;
}
static double GetAverage()
{
return total / count;
}
private:
int id;
string name;
double score;
private:
static double total;
static int count;
};
// 类外对静态数据成员进行定义声明
double Student::total = 0.0f;
int Student::count= 0;
void main()
{
// 声明四个学生对象并初始化
Student s1(1001,"James", 86);
Student s2(1001,"Kate", 67);
Student s3(1001,"Lucy", 91);
Student s4(1001,"LiLei", 65);
cout<<"The average score is "<<Student::GetAverage()<<endl;
// 修改成绩
s1.ChangeScore(50);
s2.ChangeScore(50);
s3.ChangeScore(50);
s4.ChangeScore(50);
cout<<"The average score is "<<Student::GetAverage()<<endl;
system("pause");
}
#include <iostream>
using namespace std;
class Student
{
public:
// 带参数的构造函数初始化对象
Student(int id, string name, double score)
: id(id), name(name), score(score)
{
count++;
total+=score;
}
// 修改分数成员函数
void ChangeScore(double newScore)
{
total +=newScore-score;
score=newScore;
}
static double GetAverage()
{
return total / count;
}
private:
int id;
string name;
double score;
private:
static double total;
static int count;
};
// 类外对静态数据成员进行定义声明
double Student::total = 0.0f;
int Student::count= 0;
void main()
{
// 声明四个学生对象并初始化
Student s1(1001,"James", 86);
Student s2(1001,"Kate", 67);
Student s3(1001,"Lucy", 91);
Student s4(1001,"LiLei", 65);
cout<<"The average score is "<<Student::GetAverage()<<endl;
// 修改成绩
s1.ChangeScore(50);
s2.ChangeScore(50);
s3.ChangeScore(50);
s4.ChangeScore(50);
cout<<"The average score is "<<Student::GetAverage()<<endl;
system("pause");
}
温馨提示:答案为网友推荐,仅供参考