nonstatic data members 和 static data members

发布时间 2023-05-24 10:20:23作者: 严_青

在C++中,类的数据成员可以分为非静态数据成员(non-static data members)和静态数据成员(static data members)。

  1. 非静态数据成员(non-static data members):
    非静态数据成员是类定义中没有使用static关键字声明的数据成员。对于这些数据成员,每个类的实例都有各自独立的内存空间,它们在对象创建时被初始化,并在对象销毁时释放。非静态数据成员通常用于表示类的对象状态。例如:
class MyClass {
public:
    int non_static_member; // 非静态数据成员
};
  1. 静态数据成员(static data members):
    静态数据成员是类定义中使用static关键字声明的数据成员。与非静态数据成员不同,静态数据成员在整个程序运行期间共享同一块内存空间,而不是为每个对象分配单独的内存。所有类的对象都共享相同的静态数据成员。静态数据成员通常用于表示与类本身相关的状态或值,而不是与具体对象相关。例如:
class MyClass {
public:
    static int static_member; // 静态数据成员
};

// 静态数据成员的定义和初始化(通常在CPP文件中)
int MyClass::static_member = 0;

总结:

  • 非静态数据成员属于类的每个对象,各自拥有独立的内存空间。
  • 静态数据成员属于类本身,所有类的对象共享同一块内存空间。