静态数据成员不属于类的某一特定对象,而是属于整个类的,所以使用时可用以下格式
类名::静态数据成员名
#include<iostream>
using namespace std;
class Ctest
{
private:
static int count; //注意私有
public:
Ctest(){
++count;cout<<"对象数量="<<count<<'\n';
}
~Ctest(){
--count;cout<<"对象数量="<<count<<'\n';
}
};
int Ctest::count=0; //A行,对静态数据的定义性说明
int main(void){
Ctest a[3];
return 0;
}
本例中的A行是对静态数据成员count做定义性说明,必须在文件作用域中做一次且只能做一次说明,只有这时,C++编译器为静态数据成员分配存储空间。静态数据成员放在全局变量区,具有静态生命期,但只有通过所属类的对象才可见。
特别要注意不管静态变量是私有还是公有,都必须进行定义性说明。