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