在C++中类的静态成员用static定义,而且可以是public或private的,很关键的一点是static成员是放在.data段(PE文件结构)的,所以这也是在对象的成员函数和静态函数能访问到静态成员的原因。
简单的说,静态成员是和类相关联的,普通的成员是和对象关联的。
很重要的一点是,静态成员必须要初始化,而且不能在类的进行,不然编译报错.
#include <iostream>
using namespace std;
class Cat
{
private:
static int num;//定义一个静态成员
public:
Cat()
{
num++;
}//构造函数num加1,表示多了一个cat对象
static int getNumOfCats()
{
return num;
}
~Cat()
{
num--;
}//析构函数,cat对象减一
};
int Cat::num = 0;
int main()
{
Cat c;
cout<<"Num:"<<Cat::getNumOfCats()<<endl;
Cat carr[4];
cout<<"Num:"<<Cat::getNumOfCats()<<endl;
return 0;
}