靜態變數

yaoguyuan發表於2024-08-11

[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; // 靜態全域性變數

相關文章