keyword static
1. 不能通过类名来调用类的非静态成员函数
2. 类的对象可以使用静态成员函数和非静态成员函数
3. 静态成员函数中不能引用非静态成员
因为静态成员函数属于整个类, 在类的实例化对象之前就已经分配了空间, 而类的非静态成员必须在类实例化对象后才有内存空间
4. 类的非静态成员函数可以调用静态成员函数, 但反之不行
5. 类的静态成员函数必须先初始化再使用
6. 重要特点
隐藏: 当我们同时编译多个文件时, 所有未加 static 前缀的全局变量和函数都具有全局可见性
7. static 的第二个作用是保持变量的持久化
存储在静态数据区的变量会在程序刚开始运行时就完成初始化, 也是唯一一次初始化. 共有两种变量存储在静态存储区, 全局变量和 static 变量, 只不过和全局变量比起来, static 可以控制变量的可见范围, 说到底, static 还是用来隐藏的
8. static 的第三个作用默认初始化为 0, 其实全局变量也具有这一个属性, 因为全局变量也存储在静态数据区
在静态数据区, 内存中的所有字节默认都是 0x00, 某些时候, 这一特点可以减少程序员的工作量