一. 为什么要有静态成员?
因为可能达到这样的目的:同一个类所有的对象共用一个数据.
这可以用全局变量来做到, 但这样破坏了数据的封装性. 而用将要共享的数据说明为静态成员是更好的解决方案.
二. 静态成员有哪些?
- 静态数据成员
- 静态成员函数
三. 静态数据成员
生命周期
- 程序开始运行时创建而不是对象创建时创建
- 程序结束时销毁而不是在对象销毁时销毁
声明
- 与一般的数据成员的声明类似, 只要在前面加上 static .
初始化
- 必须对静态数据成员初始化P66
- 不能在构造函数中进行初始化, 可以在实现成员函数的地方实现
<数据类型> <类名> :: <静态数据成员名> = <初始值>;
(注意要写数据类型)
引用
静态数据成员可以说明为公有的, 私有的或保护的. 若为共有的可以直接访问.
引用格式:
- <类名>::<静态数据成员名>
- <对象名>.<静态数据成员名>
- 建议使用第一种, 因为静态数据成员不属于某个对象
在成员函数里面, 可以用上面的方法引用也可以直接引用静态数据成员名.
四. 静态成员函数
作用
- 用来访问同类中的静态成员
声明
- 与一般的成员函数类似, 只要在前面加上 static .
实现
- 与一般的成员函数没差别.
访问非静态数据成员
- 由于静态成员函数只能访问静态数据成员, 所以要访问非静态数据成员的话, 必须通过参数传递的方式得到对象.