在类中直接写
class Person
{
private:
static int a = 9;
};
这样写是会报错,C++不允许在类内初始化非常量静态成员。
那你可能会这么想static不是会自己初始化
不赋值不就行了。
class Person
{
private:
static int a;
public:
int getInt(){return a;}
};
这样写编译器还是会报错,说找不到该变量。
因此我们可以得出:
在类中写 static int a;
只是声明了一个变量,并没有为其分配内存。因此如果要在类中声明静态成员,需在外部定义,在外部定义时不需要再加static。
例如:
class Person
{
private:
static int a;
};
int Person::a = 0;
这样就完成了类中static成员的声明和定义。