【C/C++】类成员进阶——类中静态成员static
发布人:shili8
发布时间:2024-12-29 23:27
阅读次数:0
**类成员进阶——类中静态成员**
在 C++ 中,类成员可以分为两种类型:非静态成员(instance member)和静态成员(static member)。非静态成员是每个对象都有自己的拷贝,而静态成员则是所有对象共享的。静态成员是类中的一种特殊成员,它们不属于任何一个具体的对象实例,而是属于整个类本身。
### 静态成员的定义和使用在 C++ 中,静态成员可以通过以下方式定义:
cppclass MyClass { public: static int myStaticMember; };
然后,在类的外部初始化该静态成员:
cppint MyClass::myStaticMember =10; // 初始化静态成员
或者在类内部直接初始化:
cppclass MyClass { public: static int myStaticMember =10; // 直接初始化静态成员};
### 静态成员的特点1. **所有对象共享**:静态成员是所有对象共享的,不像非静态成员,每个对象都有自己的拷贝。
2. **不属于任何一个具体的对象实例**:静态成员不属于任何一个具体的对象实例,而是属于整个类本身。
3. **可以在类外部初始化**:静态成员可以在类外部通过类名来访问和修改。
### 静态成员函数除了静态成员变量之外,C++ 还支持静态成员函数。静态成员函数是所有对象共享的,可以直接通过类名来调用,不需要创建任何对象实例。
cppclass MyClass { public: static void myStaticFunction() { // 静态成员函数 std::cout << "This is a static function." << std::endl; } };
可以在类外部直接调用:
cppMyClass::myStaticFunction(); // 直接通过类名来调用静态成员函数
### 静态成员的应用场景1. **计数器**:使用静态成员变量来实现一个全局计数器。
2. **配置信息**:将一些配置信息(如版本号、最大容量等)作为静态成员变量存储在类中。
3. **缓存**:使用静态成员变量来实现一个全局缓存。
### 总结在 C++ 中,静态成员是所有对象共享的,可以通过类名直接访问和修改。它们不属于任何一个具体的对象实例,而是属于整个类本身。静态成员函数也是所有对象共享的,可以直接通过类名来调用,不需要创建任何对象实例。
### 示例代码
cpp#include <iostream> class MyClass { public: static int myStaticMember; // 静态成员变量 static void myStaticFunction(); // 静态成员函数}; int MyClass::myStaticMember =10; // 初始化静态成员变量void MyClass::myStaticFunction() { // 实现静态成员函数 std::cout << "This is a static function." << std::endl; } int main() { std::cout << "myStaticMember: " << MyClass::myStaticMember << std::endl; // 访问和修改静态成员变量 MyClass::myStaticFunction(); // 直接通过类名来调用静态成员函数 return0; }
### 注释* 在 C++ 中,静态成员可以分为两种类型:非静态成员(instance member)和静态成员(static member)。
* 静态成员是所有对象共享的,不像非静态成员,每个对象都有自己的拷贝。
* 静态成员不属于任何一个具体的对象实例,而是属于整个类本身。
* 静态成员可以在类外部初始化和修改。
* 静态成员函数是所有对象共享的,可以直接通过类名来调用,不需要创建任何对象实例。