c++static的作用
时间: 2023-07-23 20:03:45 浏览: 102
C++中的`static`关键字有多种用法,以下是其中几种常见用法:
1. 静态变量:
在函数内部声明的静态变量的生命周期与程序的生命周期相同,即该变量只会被初始化一次,且只有在第一次调用函数时才会被初始化。
```c++
void foo() {
static int count = 0;
count++;
std::cout << count << std::endl;
}
int main() {
foo(); // 输出 1
foo(); // 输出 2
foo(); // 输出 3
return 0;
}
```
2. 静态函数:
在函数声明前加上`static`关键字,表示该函数只能在当前文件中使用,不会被其他文件所访问到。这种用法也称为“内部链接”。
```c++
// 在当前文件中定义的静态函数
static void internal_func() {
// do something
}
int main() {
// 调用在当前文件中定义的静态函数
internal_func();
return 0;
}
```
3. 静态成员变量:
在类的成员变量声明前加上`static`关键字,表示该成员变量是属于类的,而不是属于类的每个对象的。静态成员变量的初始化必须在类外进行。
```c++
class MyClass {
public:
static int count; // 静态成员变量声明
};
int MyClass::count = 0; // 静态成员变量初始化
int main() {
MyClass::count++;
std::cout << MyClass::count << std::endl; // 输出 1
return 0;
}
```
4. 静态成员函数:
在类的成员函数声明前加上`static`关键字,表示该成员函数不需要访问类对象的成员变量,只能访问类的静态成员变量和其他静态成员函数。
```c++
class MyClass {
public:
static int count; // 静态成员变量声明
static void increaseCount() {
count++;
}
};
int MyClass::count = 0; // 静态成员变量初始化
int main() {
MyClass::increaseCount();
std::cout << MyClass::count << std::endl; // 输出 1
return 0;
}
```
阅读全文