C++ 关键字static的作用?
参考答案:
在C++中,static
关键字具有多种用途,根据上下文的不同,它的意义也会有所不同。以下是static
在C++中的主要用途:
- 局部静态变量:当
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; // 必须在类定义外部初始化静态成员变量
在上述代码中,count
是MyClass
的一个静态成员变量。所有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++中的主要用途。