C++中static定义静态变量时,只在程序启动的时候初始化一次,后续不在初始化,且定义的该变量只能在该文件中使用,而不能夸文件使用。要想在其它文件中使用全局变量,则需要在定义的文件中使用extern关键字进行定义,并且在使用的其它文件中,同样用extern关键字进行申明,然后才可以使用。当然,如果在同一个文件中,同名的局部变量和全局变量共存,则该函数内自动使用局部变量,想要使用全局变量,则要作用域解析运算符::进行调用。下面是一些示例。
一、static静态变量用法
1.1在函数内部使用static用法
在Qt的按钮槽函数内添加如下代码:
void Widget::on_pushButton_10_clicked()
{
static int a=0;
int b=2;
qDebug()<<"a++="<<a++<<"\t"<<"b++="<<b++;
}
1.2结果如下图所示
每次点击一次按钮,则输出一次内容。其中静态变量a除了在程序启动时初始化一次,后面不在初始化。而局部变量(或成自动变量)b每调用一次函数,则初始化一次。
二、用作用域解析运算符::调用同名的全局变量下图所示
外部变量int c=10;在同名的局部变量int c=6中想要被调用,则要用作用域解析运算符::调用,即::c,结果输出为10。
参考内容:
《C++ Primer Plus》(第6版)中文版 304-316页(参考:模板函数章节)