C\C++ static的作用主要是扩展生存期,限制作用域和保证唯一性。
主要用在以下场景:
(1)修饰全局变量
(2)修饰局部变量
(3)修饰函数
(4)修饰类的成员变量
(5)修饰类的成员函数
(6)const static成员
(1)修饰全局变量
用法:static Type varName
性质:在静态数据区分配内存(不变),将变量的作用域限制在只能在模块内访问,不可以在别的模块使用extern调用。
(2)修饰局部变量
用法:用(1)
性质:在静态数据区分配内存(之前是在栈内),默认初始化为0,将变量的生存期改为直到程序运行结束,而且是唯一存在的,作用域不变依旧是定义它的函数。
(3)修饰函数
用法:static Type Function(Type var)
性质:函数作用域限制在只能在模块内访问,不可以在别的模块使用extern调用。文件作用域下inline函数默认为static类型。
(4)修饰类的成员变量
用法:同(1) 调用是可以通过类名::varName or 类对象名.varName
性质:类的所有对象共同维护。
(5)修饰类的成员函数
用法:同(4)
性质:静态成员函数不能访问非静态数据成员。静态成员函数没有this指针,因为是所有对象共有的。