C++类静态成员不依赖于类对象而是拥有独立的存储空间,因此可以单独声明。但是,不可以在类声明中进行初始化,因为类声明只描述了如何分配内存,并没有实际分配内存。
例如声明一个stringBad类:
class stringBad{
private:
static double num_of_object;
//不能在此初始化static double num_of_object=0;
public:
stringBad();
~stringBad();
}
//类声明外初始化变量
double stringBad::num_of_object=0;//类成员作用域为类
两种例外情况是:
当静态数据成员为int型或者枚举型const,可在类声明中初始化,但一般不推荐。