类与对象\静态成员

简介: 类与对象\静态成员

静态成员在同一个类的不同成员间可以数据共享

不管有多少对象,静态成员只有一个

静态成员包括 静态数据成员 和 静态成员函数

静态数据成员的初始化必须在类外进行,默认初始值为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;
}
目录
相关文章
|
编译器 C++
【C++】类和对象(中)之构造函数与析构函数
【C++】类和对象(中)之构造函数与析构函数
91 0
|
编译器 C++
C++类与对象 - 2(构造函数和析构函数)(超详细)
C++类与对象 - 2(构造函数和析构函数)(超详细)
75 0
|
7月前
类与对象\友元
类与对象\友元
35 1
|
7月前
|
安全 编译器 C语言
类与对象\构造函数与析构函数
类与对象\构造函数与析构函数
30 1
|
7月前
类与对象\this指针
类与对象\this指针
50 0
|
8月前
|
C++
c++类和对象一静态成员的讲解
c++类和对象一静态成员的讲解
50 0
c++类和对象一静态成员的讲解
|
8月前
|
C++
【C++】类和对象(五)友元、内部类、匿名对象
【C++】类和对象(五)友元、内部类、匿名对象
|
8月前
|
C++
C++类与对象【友元】
C++类与对象【友元】
|
8月前
|
C++
c++类与对象(五):友元、内部类、临时对象、匿名对象
c++类与对象(五):友元、内部类、临时对象、匿名对象
53 0
|
8月前
|
存储 NoSQL C++
『 C++类与对象 』多继承与虚继承
『 C++类与对象 』多继承与虚继承