一、什么是静态成员?
类实例“共享”的资源(成员数据或者函数),声明的方法是资源前加上static
关键字,此外应该注意静态成员必须在类内声明,类外初始化[1]。
- 节省空间 (所有类静态变量都将会使用同一个空间)
- 方便修改(发生变化的时候,仅需修改一处)
静态成员首先是类的成员,类的成员都将会受到访问控制;其次作为特殊的成员,他还可通过类名访问。类的使用者,可以通过:
- 类名访问(::)
- 实例化对象访问(A.XX)
访问静态成员,对于类的编写者,仅需注意初始化时机及其共享属性,除此,别无二样。
class A
{
private:
static int a;
};
int A::a = 4396;
四、其他使用事项
类的静态成员函数的函数体内只能访问静态成员变量。
[1] 静态数据成员之所以不能在类内初始化,实例创建时不能每次都初始化,否则就没有属性共享这一说了。
20201030 对静态成员不能再类内初始化做了一定的解释;重新表述了文字,增加了初始化静态成员的具体例子。
20211230 为什么静态成员函数只能访问静态成员?表意自洽,静态方法就是所有类共有的,你修改了一个非共有的变量,那么不应该用静态方法应该用普通方法。