static和const关键字
时间: 2024-09-28 17:02:41 浏览: 51
`static` 和 `const` 是 C++ 中非常重要的关键字,它们分别用于控制变量的作用域和值的可变性。
1. **静态(Static)**:
- **作用域**:静态成员变量属于整个类(不论创建了多少个该类的对象),而不是单个对象。这意味着,当你为类添加一个静态成员时,每个对象实例都会共享同一个静态变量的副本。如果声明为 `static const`,则静态常量在整个程序运行期间只有一个拷贝,不可修改。
- **生命周期**:静态变量的生存期贯穿整个程序的执行过程,直到程序结束才被销毁。
- **初始化**:静态变量必须在类体外进行初始化,不能在构造函数或成员函数内直接赋值。
- **示例**:
```cpp
class MyClass {
public:
static int sharedCount;
};
// 初始化静态变量
int MyClass::sharedCount = 0;
MyClass obj1, obj2; // 共享同一个sharedCount
```
2. **常量(Const)**:
- **变量值不变**:当一个变量被标记为 `const`,它的值在编译时就被确定下来,不能在运行时改变。这可以确保代码中的数据不会意外地更改,提高代码的安全性和可预测性。
- **两种形式**:有基本类型和引用类型的 const。对于基本类型,如 `int myConst = 5`,表示值不能改变;对于引用类型的 `const int& myConstRef = someInt`,是指引的内容不能改变但引用本身可以指向另一个常数。
- **适用范围**:不仅可以用在变量上,还可以用在函数参数、返回类型和成员函数上,增加函数的使用安全性和效率(例如,读取操作比写入操作更高效)。
```cpp
// 常量整型例子
const int maxValue = 100;
int main() {
// 不允许修改maxValue
maxValue = 200; // 编译错误
// const引用示例
void printConst(const int& num) {
// 只能读取num的值,不能修改
std::cout << num << '\n';
}
int value = 15;
printConst(value); // 正确
}
```
阅读全文