c++ 中 static
时间: 2023-11-06 21:08:30 浏览: 55
在C++中,`static`是一个关键字,可以用于修饰变量、函数和类。它具有不同的含义,取决于它所修饰的内容。
1. 静态变量(Static Variables):在函数内部使用`static`修饰的变量称为静态变量。静态变量在程序的生命周期中只被初始化一次,并且在函数调用之间保持其值。静态变量存储在静态存储区,而不是堆栈中。可以通过函数名和作用域解析运算符来访问静态变量。
```cpp
void foo() {
static int counter = 0; // 静态变量
counter++;
cout << "Counter: " << counter << endl;
}
int main() {
foo(); // 输出: Counter: 1
foo(); // 输出: Counter: 2
return 0;
}
```
2. 静态函数(Static Functions):在类中使用`static`修饰的成员函数称为静态函数。静态函数不依赖于任何特定的对象,可以直接通过类名进行调用。它们不能访问非静态成员变量,只能访问其他静态成员(包括静态变量和静态函数)。
```cpp
class MyClass {
public:
static void staticFunc() {
cout << "This is a static function" << endl;
}
};
int main() {
MyClass::staticFunc(); // 输出: This is a static function
return 0;
}
```
3. 静态数据成员(Static Data Members):在类中使用`static`修饰的成员变量称为静态数据成员。静态数据成员属于类本身,而不是类的实例。它们在程序的生命周期中只有一个副本,并且可以被类的所有对象共享。静态数据成员必须在类外部进行定义和初始化。
```cpp
class MyClass {
public:
static int staticVar;
};
int MyClass::staticVar = 10; // 定义和初始化静态数据成员
int main() {
cout << MyClass::staticVar << endl; // 输出: 10
return 0;
}
```
使用`static`关键字可以有效地控制变量、函数和类的作用范围和生命周期,并且具有一些特殊的用途,例如实现单例模式或在类中共享数据。