类的静态成员变量在类中只能声明,定义和初始化要在类外:
class Myclass
{
private:
static int a; // 类内声明
}
int Myclass::a = 10; // 类外定义和初初化,注意,这时不需要带static
也有些编译器支持在类内定义并初始化,但大多数编译器不支持,所以安全的做法还是类内声明,类外定义和初始化。
类的静态成员函数的声明和定义与普通的成员函数相同,既可以在类内声明和定义,也可以在类内声明,类外定义:
class Myclass
{
public:
static int fun();
}
int Myclass::fun()
{
return 1;
}
需要注意的是,在类外的函数定义前不能写static。