一、定义
static顾名思义为静态变量,用static修饰的变量或者函数在生命周期和作用域上都会
有所不同。我们在下面的例子中来依次分析。
二、使用
1、类的静态成员
class A{public :static int b;};int A::b = 0;//类中静态成员记得要初始化,告诉编译器给静态成员分配内存,不然会报错int main(){A a;a.b = 3;printf("%d",a.b);}2、类的静态成员函数
class A{public :static int a;static int get_a(int &b)//类的静态成员函数,只能访问静态成员{a = b;printf("%d",a);}};int A::a = 0;int main(){int d = 3;A c;c.get_a(d);}
注意!类的静态成员函数只能访问静态成员,且静态成员函数可以继承和覆盖,但无法被声明为虚函数。
3、全局静态变量
只在本文件内是有效的,只能让本文件内的函数访问,防止让其他文件的函数来访问。这一点和c语言中
static全局变量是一样的。
4、全局静态函数
这个和全局静态变量一样只在本文件中是有效的。需要注意的是:不要在头文件中声明static的全局函数,
不要在cpp内声明非static的全局函数,如果你要在多个cpp中复用该函数,就把它声明提到头文件中去,否
则cpp内部需要加上static修饰。
欢迎各位来指出不足之处