(一)静态数据成员
1)属于类,不属于某个对象(类的所有对象共享的数据,不占用具体实例的空间)
2)只能在类外初始化(静态的const数据成员特殊)
3)不能用初始化表对静态成员初始化,未赋初值是默认为0。
3)静态数据成员实在程序编译时被分配空间的,到程序结束才释放空间——全局寿命。并且不会变更一开始分配的空间
4)静态数据成员可以通过类名引用也可以通过对象名引用。
注意:
1. 初始化不等于赋初值,初始化等价于定义(初始化==从无到有)。类内对静态成员变量进行了声明,但是定义必须在类外。没赋初值是默认初值为0。
2. 无论有多少个类对象,都只有一个静态数据的拷贝,并且不会给静态成员对象分配空间。
(二)静态成员函数
静态成员函数:类声明中,函数前加static
static float average();
(1)静态成原函数的作用:不是为了对象之间的沟通,而是为了能够处理静态数据成员。
(2)静态成员函数通常只用于访问静态数据成员。(因为没有this指针,所以非静态成员无法实例化,也就是说不知道自己属于哪个对象,也就没有意义)
(3)静态成员函数中不能调用非静态成员函数,但是非静态成员函数中可以调用静态成员函数。