Static的作用域只有这个编译单元内部,但是声明周期是永久的 如果是全局变量,如在编译单元A内部有一个int a
的全局变量,那么在编译单元B中可以通过extern int a
访问到A内的这个全局变量;
如图,静态全局变量必须定义在类的外面,在类内部只相当于声明; 同时,其作用域也在A内,也就是类A可以用,外面不能用 还要注意,在类外定义的时候不能写static 所以,静态成员可以用来在同一个类的所有实例中共享状态! 静态成员的初始化也不能在类中用初始化列表,因为其相当于是对实例进行初始化;正确做法是在外部定义的地方直接初始化 静态成员函数只能使用静态变量,不能使用普通成员函数的变量