c++的静态成员变量可被该类的所有方法访问
时间: 2024-09-12 13:05:04 浏览: 49
在C++中,静态成员变量是一种特殊的类成员,它不属于类的任何单一对象,而是被该类的所有对象共享。静态成员变量的定义使用了关键字 `static`,并且需要在类体外进行初始化。
静态成员变量有几个特点:
1. 存储空间:静态成员变量存储在全局数据区,而不是在对象的内存空间中,因此它的生命周期贯穿整个程序运行期间,不会随着对象的创建和销毁而创建和销毁。
2. 访问权限:静态成员变量可以通过类名和作用域解析运算符 `::` 直接访问,也可以通过类的对象访问。如果通过对象访问,编译器会忽略对象名,直接使用类名和 `::` 来访问。
3. 访问范围:由于静态成员变量不是由对象直接拥有的,因此它对于类的所有成员函数(包括静态成员函数和非静态成员函数)都是可见的,可以在这些函数中被访问和修改。
这里有一个简单的例子来说明静态成员变量的使用:
```cpp
class MyClass {
public:
static int staticVar; // 声明静态成员变量
MyClass() {
// 构造函数
}
void nonStaticMethod() {
staticVar = 10; // 通过对象访问静态成员变量
}
static void staticMethod() {
staticVar = 20; // 通过静态成员函数直接访问静态成员变量
}
};
int MyClass::staticVar = 0; // 在类外定义并初始化静态成员变量
int main() {
MyClass::staticVar = 100; // 通过类名直接访问静态成员变量
MyClass obj;
obj.nonStaticMethod(); // 通过对象调用成员函数,修改静态成员变量
MyClass::staticMethod(); // 通过类名调用静态成员函数,修改静态成员变量
return 0;
}
```
阅读全文