const 成员函数可以修改静态成员变量吗
时间: 2024-10-22 12:26:04 浏览: 21
C++静态成员变量和静态成员函数的使用方法总结
5星 · 资源好评率100%
`const` 成员函数不能修改静态成员变量[^1]。这是因为`const`修饰的成员函数表示其不会改变对象的状态,包括对非`mutable`的静态成员的修改。如果要访问并可能修改静态成员,应直接使用类名而不是对象实例。
例如:
```cpp
class MyClass {
public:
static const int staticVar; // 声明静态const变量
// const成员函数,不允许修改staticVar
void constFunc() const {
// 不可以写:staticVar++; // 这会编译错误
}
};
// 初始化const成员变量
const int MyClass::staticVar = 0;
int main() {
const MyClass obj; // const对象不能调用非const成员函数
// obj.constFunc(); // 错误:const函数不能修改静态成员
// 直接通过类名修改静态变量
MyClass::staticVar++; // 正确
}
```
阅读全文