跳到主要内容

C++ 关键字static的作用?

参考答案:

在C++中,static关键字具有多种用途,根据上下文的不同,它的意义也会有所不同。以下是static在C++中的主要用途:

  1. 局部静态变量:当static关键字用于函数内部时,它声明了一个局部静态变量。局部静态变量在程序的整个运行期间只会被初始化一次,而且在函数调用之间保持其值。因此,局部静态变量常用于在函数调用之间保持信息。
void count() {
    static int num = 0;
    num++;
    std::cout << num << std::endl;
}

在上述代码中,num是一个静态局部变量。每次调用count()函数时,num都会递增,而不会在每次函数调用后重置。 2. 类成员变量:在类的定义中,static关键字可以用于成员变量。这样的变量是类的所有对象共享的。无论创建了多少个类的实例,都只有一个这样的静态成员变量的副本。

class MyClass {
public:
    static int count;
};

int MyClass::count = 0;  // 必须在类定义外部初始化静态成员变量

在上述代码中,countMyClass的一个静态成员变量。所有MyClass的实例都共享同一个count变量。 3. 类成员函数static关键字也可以用于类的成员函数。这样的函数不能访问类的非静态成员(包括非静态成员变量和非静态成员函数)。它们只能访问静态成员,以及其他静态成员函数和全局变量。

class MyClass {
public:
    static void printCount() {
        std::cout << count << std::endl;
    }
};

在上述代码中,printCount是一个静态成员函数,它只能访问静态成员变量count。 4. 静态类static关键字还可以用于定义嵌套类,使其成为一个静态类。静态类不能包含非静态成员,并且只能访问外部类的静态成员。

class Outer {
public:
    static class Inner {
    public:
        void doSomething() {
            // 只能访问Outer类的静态成员
        }
    } inner;
};

在上述代码中,Inner是一个静态嵌套类,它只能访问Outer类的静态成员。

以上就是static关键字在C++中的主要用途。