当前位置:实例文章 » 其他实例» [文章]【C/C++】类成员进阶——类中静态成员static

【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)。
* 静态成员是所有对象共享的,不像非静态成员,每个对象都有自己的拷贝。
* 静态成员不属于任何一个具体的对象实例,而是属于整个类本身。
* 静态成员可以在类外部初始化和修改。
* 静态成员函数是所有对象共享的,可以直接通过类名来调用,不需要创建任何对象实例。

其他信息

其他资源

Top