掌握 C++ 中 static 关键字的多种使用场景


在 C++ 中,static 关键字有多种使用场景,它可以用于变量、函数、类成员以及局部变量,每种情况下都有不同的语义和作用。

1. 静态变量

静态变量是指在函数内部或者类中声明的变量,其生命周期与程序的运行周期相同,但其作用域受到限制。

用法示例:

void foo() {
    static int counter = 0; // 静态变量,只初始化一次
    counter++;
    cout << "Counter: " << counter << endl;
}

int main() {
    foo(); // 输出 Counter: 1
    foo(); // 输出 Counter: 2
    foo(); // 输出 Counter: 3
    return 0;
}

2. 静态函数

静态函数是指在类中声明的函数,它不依赖于任何对象实例,可以直接通过类名调用。

用法示例:

class MyClass {
public:
    static void staticFunc() {
        cout << "Static function called" << endl;
    }
};

int main() {
    MyClass::staticFunc(); // 输出 Static function called
    return 0;
}

3. 静态数据成员

静态数据成员是指在类中声明的静态变量,它被所有类的对象所共享,并且只有一份副本。

用法示例:

class MyClass {
public:
    static int count;
};

int MyClass::count = 0; // 静态数据成员的初始化

int main() {
    MyClass obj1;
    MyClass obj2;
    obj1.count = 5;
    cout << obj2.count; // 输出 5
    return 0;
}

4. 静态局部变量

静态局部变量是指在函数内部声明的静态变量,其生命周期与程序的运行周期相同,但其作用域受到限制。

用法示例:

void foo() {
    static int counter = 0; // 静态局部变量,只初始化一次
    counter++;
    cout << "Counter: " << counter << endl;
}

int main() {
    foo(); // 输出 Counter: 1
    foo(); // 输出 Counter: 2
    foo(); // 输出 Counter: 3
    return 0;
}

总的来说,static 关键字在 C++ 中有多种用法,它可以用于变量、函数、类成员以及局部变量,每种情况下都有不同的语义和作用,能够满足不同的编程需求。


原文链接:codingdict.net