static 关键字主要作用
1.全局静态变量
全局静态变量,内存会申请在静态存储区,在程序运行期间都在,本文件可见
staic int g_count = 0;
int main(){
return 0;
}
2.局部静态变量
局部静态变量,作用于为局部作用域,但是生命周期是存在整个程序运行期间,初始化语句只执行一次;
int getCount(){
// 此语句只会执行一次
static int count = 0;
return ++count;
}
int main(){
while(1){
getCount();
}
return 0;
}
3.静态函数
函数默认是extern,使用static的函数仅本文件可见
static int getCount();
4.静态成员函数
静态成员函数不可以访问类的成员函数,可以使用class:func访问
class DuckA {
public:
static void loadModel() {
cout << "Duck" << endl;
// 静态成员属于类本身,而成员变量model是在类对象产生之后产生的,
// 静态成员函数调用成员变量相当于使用未定义的变量
model = 1; // error
time = 10;
}
static int time;
int model;
};
int DuckA::time = 0;
int main()
{
DuckA::loadModel();
DuckA a;
a.loadModel();
return 0;
}
5.静态成员变量
类内申明,类外定义,避免多次申请内存
static 主要使用场景
1.调用方便,不适用对象就可以使用
2.一切不用产生对象就可以确定行为的函数都可以设计为静态函数