希望c++的入门者们闲暇之余,可以浏览思考,有什么问题欢迎留言或者私信。
类的封装和继承----NO.4
eg.声明一个Student类,在该类中包括一个数据成员:score(代表课程成绩)、两个静态数据成员:total_score(代表总分),count(代表学生总人数)。成员函数有:构造函数、析构函数、account(int)用于设置分数、静态成员函数sum()返回所有学生的总成绩、静态成员函数average()返回所有学生的平均成绩、print()用于打印当前学生对象的成绩等。在主程序中,输入某班同学的成绩,并调用上述函数打印全班同学的成绩、求出全班学生的成绩之和与平均分等。Student类的框架可参考:
class Student //声明Student类
{
public:
Student(int ); // 构造函数
~Student(); // 析构函数
void account(int); // 设置分数
static int sum(); // 返回总成绩
static double average(); // 返回平均成绩
void print(); // 打印输出Student的相关信息
private:
int score; // 分数
static int total_score; // 总分
static int count; // 总人数
}; // Student类声明结束
注意:静态成员和非静态成员的初始化方式的区别。
#include<iostream>
using namespace std;
class Student //声明Student类
{
public:
Student( ); // 构造函数
~Student(); // 析构函数
void account(int); // 设置分数
static int sum(); // 返回总成绩
static double average(); // 返回平均成绩
void print(); // 打印输出Student的相关信息
void print1();
private:
int score; // 分数
static int total_score; // 总分
static int count; // 总人数
// static double average;
}; // Student类声明结束
Student::Student( )
{
score=0;
}
Student::~Student()
{
}
void Student::account(int Score)
{
score=Score;
total_score=score+total_score;
count++;
}
int Student::sum()
{
return total_score;
}
double Student::average()
{
return total_score*1.0/count;
}
void Student::print1()
{
cout<<"学生成绩 "<<score<<endl;
}
void Student::print()
{
cout<<"总分为 "<<sum()<<endl;
cout<<"平均分为 "<<average()<<endl;
}
int Student::total_score=0;
int Student::count=0;
int main()
{
Student shuzu[80];
cout<<"输入学生人数: "<<endl;
int Count;
cin>>Count;
int i=0;
int a;
cout<<"输入学生成绩"<<endl;
for(i=0;i<Count;i++)
{
cin>>a;
shuzu[i].account(a);
}
for(i=0;i<Count;i++)
{
shuzu[i].print1();
}
shuzu[0].print();
return 0;
}
运行结果
有问题私聊博主或者在下面留言,如果有更好的解法也请留言,欢迎大家讨论,共同进步,一起学习。
“C++是面向对象编程,我也想面向对象编程。”