静态对象 - AntonioLMH/C-Tutorial GitHub Wiki

两种含义: 1.存储是持久存储的。 2.访问性是受局限的(只能在当前文件被访问)

Static local variables:Persistent Storage Static member variables:Shared by all instances Static member function:Shared by all instances,can only access static member variables

static的本地变量相当于全局变量

static在全局数据区,link的时候分配好了内存,但到初始化时初始化。

在函数内部的static只做一次初始化(第一次进函数)。

方法一:条件构造 void f (int x){ if(x>10){ static X my_x(x,x*2); } } 方法二:全局对象的构造 全局变量构造函数执行在main函数之前。 析构函数在main函数结束时或者exit()被调用。

文件之间构造函数顺序每次不一定一样,所以跨文件依赖不行。要么全局声明放在同一个文件。 Non-local static object: 1.defined在global或namespace的scope 2.declare static在一个类里 3.defined static 在文件scope。

Static: 1.hidden 2.persistent(1.全局 2.malloc)

静态成员(Static member)是class-wide的,不依赖某个对象

class A{ private: static int i; }; static int A::i;

initializer list 只能对非静态成员初始化

cout<<A::i 也可以用来访问类的静态成员(或函数)。

静态的函数只能调静态的成员变量和静态的函数。