[Lang] 靜態變數
1. 靜態區域性變數
生命週期:程式執行期間
作用域:函式內部
靜態區域性變數只初始化一次
#include<iostream>
using namespace std;
void exampleFunction() {
static int counter = 0; // 靜態區域性變數只初始化一次
counter++;
cout << counter << " ";
}
int main() {
for (int i = 0; i < 5; i++) {
exampleFunction();
}
cout << endl;
return 0;
}
[Running] cd "d:\CppDev\Lang\static\" && g++ test1.cpp -o test1 && "d:\CppDev\Lang\static\"test1
1 2 3 4 5
[Done] exited with code=0 in 0.388 seconds
2. 靜態成員變數
生命週期:程式執行期間
作用域:可以透過類名直接訪問,也可以透過類的物件訪問,且在所有物件之間共享
靜態成員變數必須在類外初始化
#include<iostream>
using namespace std;
class MyClass{
public:
static int count;
MyClass() {
count++;
}
};
// 靜態成員變數必須在類外初始化
int MyClass::count = 0;
int main() {
MyClass obj1, obj2, obj3;
cout << "Number of objects created: " << MyClass::count << endl;
return 0;
}
[Running] cd "d:\CppDev\Lang\static\" && g++ test2.cpp -o test2 && "d:\CppDev\Lang\static\"test2
Number of objects created: 3
[Done] exited with code=0 in 0.43 seconds
3. 靜態全域性變數
生命週期:程式執行期間
作用域:本檔案
static int globalVar = 0; // 靜態全域性變數