类的静态成员-C++
类是类型的拓展
对象是变量的拓展
创建一个计数器,统计当前时刻系统中对象的个数
——初值为0,每创建一个对象就把计数值+1,每释放一个对象就把计数值-1
- 创建对象一定会调用构造函数,因此可以在构造函数中对该计数器+1
- 释放对象一定会调用析构函数,因此可以在析构函数中对该计数器-1
构造函数允许重载,可能存在多个构造函数
构造函数和析构函数能对该计数器进行操作
方案一:全局变量
- 好处:在任何地方都可以获取DateCount的值
- 坏处:任何函数都可以修改该变量的值
int DateCount=0;//全局变量,初始化为0
public class CMyDate
{
private:
int year,month,day;
public:
CMyDate(int y,int m,int d)//构造函数
{
……
DateCount++;
}
~CMyDate() //析构函数
{
DateCount--;
}
……
};
方案二:静态数据成员
- 克服坏处,private成员只能从类的内部访问
- 如何从外部获取Count的当前值?
解法:为获取该值设计成员函数
//int DateCount=0;//全局变量,初始化为0
public class CMyDate
{
private:
int year,month,day;
static int Count; //设置静态数据成员
public:
CMyDate(int y