C++——static应用全解
在C++中,static 关键字有多种用途,具体取决于它被使用的上下文。
一、作为变量修饰符
1、全局静态变量
全局静态变量的作用域限制在声明它的文件内,不能被其他文件访问。此外,如果在多个文件中声明了相同的全局静态变量,链接器不会报错,因为每个文件都会有自己的副本。
// file1.cpp
extern int globalVar; // 声明
int globalVar = 10; // 定义
// file2.cpp
extern int globalVar; // 声明
int main() {
globalVar = 20;
cout << "globalVar in file2: " << globalVar << endl;
}
// static_var.cpp
static int globalStaticVar = 10; // 全局静态变量
int main() {
cout << "globalStaticVar: " << globalStaticVar << endl; // 只能在本文件中访问
}
2、局部静态变量
局部静态变量的作用域限制在其声明的函数内,但生命周期贯穿整个程序的执行过程。每次调用函数时,局部静态变量不会重新初始化,而是保留上次调用结束时的值。
#include <iostream>
using namespace std;
v