// 静态成员
#include <iostream>
#include <string>
using namespace std;
class Student
{
private:
char *name; // 普通数据成员,用于表示学生姓名
char *stu_no; // 普通数据成员,用于表示学生学号
float score; // 普通数据成员,用于表示学生成绩
static int count; // 静态数据成员,用于统计学生人数
static float sum; // 静态数据成员,用于统计累加成绩
static float ave; // 静态数据成员,用于统计平均成绩
public:
Student(char *name1,char *stu_no1,float score1);
~Student();
// 普通成员函数,用于输出姓名、学号和成绩
void show();
// 静态成员函数,用于输出学生人数和累加成绩和平均成绩
static void show_count_sum_ave();
// 静态成员函数,用于访问非静态数据成员
static void display(Student &stu);
};
Student::Student(char *name1,char *stu_no1,float score1)
{
name = new char[strlen(name1)+1];
strcpy(name,name1);
stu_no = new char[strlen(stu_no1)+1];
strcpy(stu_no,stu_no1);
score = score1;
++count; // 累加学生人数
sum += score; // 累加学生成绩
ave = sum/count; // 计算平均成绩
}
Student::~Student()
{
delete []name;
delete []stu_no;
}
void Student::show()
{
cout<<"姓名: "<<name<<endl;
cout<<"学号: "<<stu_no<<endl;
cout<<"成绩: "<<score<<endl;
}
void Student::show_count_sum_ave() // 静态成员函数
{
// 输出静态数据成员count
cout<<"学生人数: "<<count<<endl;
// 输出静态数据成员sum
cout<<"累加成绩: "<<sum<<endl;
// 输出静态数据成员ave
cout<<"平均成绩: "<<ave<<endl;
}
// 静态成员函数(要通过 对象 )
void Student::display(Student &stu)
{
// 输出非静态数据成员name
cout<<"姓名: "<<stu.name<<endl;
// 输出非静态数据成员stu_no
cout<<"学号: "<<stu.stu_no<<endl;
// 输出非静态数据成员score
cout<<"成绩: "<<stu.score<<endl;
}
// 静态数据成员的初始化(若无赋值,默认为0)
int Student::count = 0;
float Student::sum = 0.0;
float Student::ave = 0.0;
int main()
{
cout<<"在main()中输出: "<<endl;
Student stu1("Liming","070201",90);
stu1.show();
// 使用 类名 访问静态成员函数
Student::show_count_sum_ave();
cout<<"---------------------"<<endl;
Student stu2("Zhanghao","070202",80);
stu2.show();
// 使用 对象 访问静态成员函数
stu2.show_count_sum_ave();
cout<<"\n用静态成员函数访问非静态数据成员输出: "<<endl;
// 使用 静态成员函数 访问非静态数据成员
Student::display(stu1);
cout<<"---------------------"<<endl;
Student::display(stu2);
return 0;
}
C++ 学习之路(4):静态成员
最新推荐文章于 2025-03-14 16:03:02 发布