静态成员数据

  每个类在实例化的时候都有他自己的成员变量,这个成员变量是其他实例所不可见的

即使它们是从同一个类实例化而来。那么当我们需要同一种类共享一个变量或者函数怎么办呢?这个时候静态成员数据就发挥了它的作用,静态成员数据相对于同种类之间是全局的,而相对于其他不同的类却是局部的。这就好像是一种全局数据和成员数据的折衷。

  我们在声明静态变量的时候只要在声明变量和函数的前面加上static就可以了:

  static int age;

  但是要使用它的时候,我们需要对它进行初始化:

  对象::age = 0;

  因为在创建对象的时候静态变量并没有被分配内存空间,所以我们需要对它初始化,因为它并不在这个对象中,它是属于这个类的全局变量,不是对象的。所以不要忘了初始化它。同样的当对象被销毁的时候,静态变量是不会被销毁的。

  如果在一个类中把一个成员函数声明为共有的并且是静态的。那么任何函数都可以访问它,

同时因为它是静态的,所以不通过这个类的实例化对象也能够调用它。 当然通过对象也能够调

用它。

  这里需要注意的是,静态成员函数没有this指针,因此不能将它们声明为const,由于在成

员函数中是通过this指针来访问成员数据变量的,因此静态成员函数不能访问非静态成员变量。
原文地址:https://www.cnblogs.com/sunnystone85/p/1401134.html