任意时候找当前类的对象个数
#include <stdio.h>
class Test
{
private:
int mCount;
public:
Test():mCount(0)
{
mCount++;
}
~Test()
{
mCount--;
}
int getCount()
{
return gCount;
}
};
Test gTest;
int main()
{
Test t1;
Test t2;
printf("Count = %d\n",gTest.getCount());
printf("Count = %d\n",t1.getCount());
printf("Count = %d\n",t2.getCount());
return 0;
}
静态成员变量的特性
- 在定义时用static
- 静态成员变量需要在类外单独分配空间
- 静态成员变量在程序累不位于全局数据区
语法规则
- Type ClassName::VarName = value;
#include <stdio.h>
class Test
{
private:
static int mCount;
public:
Test()
{
mCount++;
}
~Test()
{
mCount--;
}
int getCount()
{
return mCount;
}
};
int Test::mCount = 0;
Test gTest;
int main()
{
Test t1;
Test t2;
printf("Count = %d\n",gTest.getCount());
printf("Count = %d\n",t1.getCount());
printf("Count = %d\n",t2.getCount());
Test * pt = new Test();
printf("count = %d\n", pt->getCount());
delete pt;
printf("Count = %d\n",gTest.getCount());
return 0;
}
小结
- 类可通过static关键字定义静态成员变量
- 静态成员变量隶属类所有
- 每一个对象都可访问静态成员变量
- 静态成员变量存储在全局数据区
- 静态成员变量的生命周期为程序运行周期