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

c++中static关键字的作用

作者:野牛程序员:2023-07-28 08:46:40 C++阅读 2327

在 C++ 中,static 关键字用于修饰不同的实体(变量、函数、类成员等),其作用与上下文相关,具体取决于它所修饰的实体。以下是 static 关键字的不同用法和作用:

  1. 静态局部变量(Static Local Variable): 在函数内部使用 static 关键字声明的局部变量,会在第一次调用函数时被初始化,并且在函数调用结束后也不会被销毁,保留其值,直到程序运行结束。

void foo() {
    static int count = 0; // 静态局部变量
    count++;
    std::cout << "调用次数:" << count << std::endl;
}

int main() {
    foo(); // 输出:调用次数:1
    foo(); // 输出:调用次数:2
    foo(); // 输出:调用次数:3

    return 0;
}
  1. 静态全局变量(Static Global Variable): 在函数外部使用 static 关键字声明的全局变量,其作用范围被限制在当前文件内,即它只能在当前文件中被访问,其他文件不能访问。

// file1.cpp
static int globalVar = 10; // 静态全局变量

// file2.cpp
extern int globalVar; // 错误!无法访问 file1.cpp 中的静态全局变量
  1. 静态成员变量(Static Member Variable): 在类中使用 static 关键字声明的成员变量,属于类本身而不是类的实例。所有类的实例共享同一个静态成员变量,它在程序运行期间只有一个副本。

class MyClass {
public:
    static int staticVar; // 静态成员变量
};

int MyClass::staticVar = 0; // 静态成员变量的初始化,通常在类外进行

int main() {
    MyClass obj1;
    MyClass obj2;

    obj1.staticVar = 42;
    std::cout << obj2.staticVar << std::endl; // 输出:42

    return 0;
}
  1. 静态成员函数(Static Member Function): 在类中使用 static 关键字声明的成员函数,属于类本身而不是类的实例。静态成员函数没有隐含的 this 指针,因此不能访问类的非静态成员变量和非静态成员函数。

class MyClass {
public:
    static void staticFunc() {
        std::cout << "这是一个静态成员函数" << std::endl;
    }
};

int main() {
    MyClass::staticFunc(); // 输出:这是一个静态成员函数

    return 0;
}

总之,static 关键字在 C++ 中用于不同的场景,可以用来实现静态变量、静态函数、静态成员变量等。静态成员在内存中只有一个副本,并且与类或对象无关,可以用于在多个对象之间共享数据或方法。


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

最新推荐

热门点击