一、静态变量:
在了解静态变量之前,读者需要知道什么是全局变量和局部变量。局部变量直至定义在函数内部的变量,在函数调用结束后,局部变量将消失。全局变量是指在函数体外定义的变量,它的生命期随着程序的结束而结束。
对于静态变量读者可以简单粗暴地理解为全局变量,但是二者又有区别。如果定义一个静态的局部变量,它的生命期在函数调用结束后依然存在,在下次调用函数时,会依然保存上一次函数调用结束之后的值。并且,对于静态变量只执行一次初始化(无论函数调用多少次)。在 C++中静态变量是使用 static 关键字来定义的。
void Invoke()
{
static int s_nNum = 0; //定义静态局部变量
cout << s_nNum << endl;
s_nNum++;
}
int main()
{
for(int i = 0; i < 10; i++)
Invoke();
return 0;
}
注:对于普通的局部变量,在函数调用时每次都会执行初始化操作,并且在函数调用结束后被销毁。对于全局变量来说,不仅能够够在当前文件中使用,而且还可以在其他文件中被使用。但是全局静态变量则不同,它的作用域是当前定义全局静态变量处到当前文件的结束,不能够在其他文件中访问全局静态变量。
二、静态数据成员
在类中使用 static 关键字将数据成员定义为静态成员。静