静态对象
deprecated 过时
persistent storage 持久存储
shared by all instances 在所有对象之间共享
only access static member variable 只能访问静态函数/对象
- static 的本地变量就是全局变量,并且只能在那个函数内部被访问。
如果函数里面有一个静态本地变量,那个本地变量实际上在全局。同样某个类里面有个static 成员变量,这个变量实际上在全局。如下图
上图的extern int i是个申明,不是定义,在这个.cpp里面没有这个i的位置, 这句话只是告诉compiler说某个地方有一个叫做i的东西, 不知道在哪里,link负责找出它。写在class里面的所有东西都是申明。写在这里的意思是说某个地方有个全局变量叫做i, 它是我的成员变量(只有在我这个class里面 能够访问它。)
所以写了一个static的成员变量, 你一定要在某个.cpp里面
所以如果这个类有静态成员变量的,那么这个类一定要有个对应的.cpp,里面写上int A::i 如下图
**如上图,static成员变量要多做一件事情, 找一个.cpp去放这个变量, 要不然只是申明了,没有定义它。 **
上图两种方式访问成员函数,static给我们provid了 一种手段, 没有成员变量之前就能访问成员函数。static函数只能访问static成员变量。原因是static成员函数没有this(没有this是因为我们需要这个类没有对象的时候就能够被调用。)