每个类在实例化的时候都有他自己的成员变量,这个成员变量是其他实例所不可见的
即使它们是从同一个类实例化而来。那么当我们需要同一种类共享一个变量或者函数怎么办呢?这个时候静态成员数据就发挥了它的作用,静态成员数据相对于同种类之间是全局的,而相对于其他不同的类却是局部的。这就好像是一种全局数据和成员数据的折衷。
我们在声明静态变量的时候只要在声明变量和函数的前面加上static就可以了:
static int age;
但是要使用它的时候,我们需要对它进行初始化:
对象::age = 0;
因为在创建对象的时候静态变量并没有被分配内存空间,所以我们需要对它初始化,因为它并不在这个对象中,它是属于这个类的全局变量,不是对象的。所以不要忘了初始化它。同样的当对象被销毁的时候,静态变量是不会被销毁的。
如果在一个类中把一个成员函数声明为共有的并且是静态的。那么任何函数都可以访问它,
同时因为它是静态的,所以不通过这个类的实例化对象也能够调用它。 当然通过对象也能够调
用它。
这里需要注意的是,静态成员函数没有this指针,因此不能将它们声明为const,由于在成
员函数中是通过this指针来访问成员数据变量的,因此静态成员函数不能访问非静态成员变量。