当前位置:首页 C++ > 正文

c++中类的static变量在什么时候初始化,函数的static变量在什么时候初始化。

作者:野牛程序员:2023-12-04 16:55:53 C++阅读 2776

C++中,类的static成员变量和函数的static局部变量都在程序执行过程中的特定时刻进行初始化。

  1. 类的static成员变量:

    例如:

    // MyClass.h
    class MyClass {
    public:
        static int myStaticVariable;
    };
    
    // MyClass.cpp
    int MyClass::myStaticVariable = 42; // 初始化 static 成员变量
    • 在类的定义中声明static成员变量。

    • 在类外部对static成员变量进行定义和初始化。这通常是在源文件中进行,而不是头文件中。初始化只会在程序的一个编译单元中进行,以避免重复定义。

    • 如果没有显式提供初始值,static成员变量将使用默认初始化,即零初始化(如果是基本数据类型)。

  2. 函数的static局部变量:

    例如:

    #include <iostream>
    
    void myFunction() {
        static int myStaticLocalVariable = 0; // 初始化 static 局部变量
        myStaticLocalVariable++;
        std::cout << "Static Local Variable: " << myStaticLocalVariable << std::endl;
    }
    
    int main() {
        myFunction(); // 第一次调用,初始化 static 局部变量
        myFunction(); // 后续调用,保留上一次的值
        return 0;
    }
    • 在函数内部声明static局部变量。

    • static局部变量在程序首次执行到包含它的函数时初始化,且只在第一次进入函数时进行初始化。之后的函数调用不会重新初始化static局部变量,而是保留上一次的值。

总体来说,static变量的初始化是在程序执行的编译和链接阶段进行的,而不是在运行时进行的。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击