类的 static 数据成员是独立于该类的任意对象而存在的,每个 static 数据成员是与类关联的对象,并不与该类的对象相关联。
因此,static 数据成员必须在类定义体的外部定义。且不像普通数据成员,static 成员不是通过类的构造函数进行初始化,而是应该在定义时进行初始化。
static 数据成员必须在类定义体的外部定义,static 关键字只能用于类定义体内部的声明中,定义不能标示为static。
静态数据成员初始化的格式为:
<数据类型><类名>::<静态数据成员名>=<值>
类使用static成员的优点:
- static 成员的名字是在类的作用域中,因此可以避免与其他类的成员或全局对象名字冲突;
- 可以实施封装。static 成员可以是私有成员,而全局对象不可以;
- static 成员是与特定类关联的,可清晰地显示程序员的意图。
类的静态数据成员有两种访问形式:
<类对象名>.<静态数据成员名>
或
<类类型名>::<静态数据成员名>