静态成员在同一个类的不同成员间可以数据共享
不管有多少对象,静态成员只有一个
静态成员包括 静态数据成员 和 静态成员函数
静态数据成员的初始化必须在类外进行,默认初始值为0
#include <iostream> using namespace std; class Croster { public: static int Count; private: string name; int math; int english; static int Sum; static int Ave; public: Croster(string na="undef",int m=0,int e=0); void Display1(); static void Display2(); ~Croster(); }; Croster::Croster(string na, int m, int e):name(na),math(m),english(e) { cout << "hi,newcomer" << endl; Sum += (math + english); Count--; //在构造函数中修改计数 } void Croster::Display1() { cout << name << endl; cout << "Math:" << math << endl; cout << "English:" << english << endl; cout << "Sum=" << Sum << endl; } void Croster::Display2() { //静态成员函数不允许访问非静态成员 if (Count == 50) cout << "Ave=0" << endl; else cout << "Ave=" << Sum * 1.0 / (50 - Count) << endl; } Croster::~Croster() { cout << "Bye~" << endl; Count++; //在析构函数中修改计数 Sum -= (math + english); } //初始化静态数据成员 int Croster::Count = 50; int Croster::Sum = 0; //默认为0,这行可以不写 int main() { Croster::Display2(); Croster stu_a("LiMei", 87, 97); stu_a.Display1(); Croster stu_b("LiLei", 83, 93); stu_b.Display1(); Croster* p; p = new Croster("ZhaoYan", 95, 87); p->Display1(); delete p; Croster::Display2(); return 0; }