C++类对象中的成员变量和成员函数是分开存储的
成员变量:
普通成员变量:存储于对象中,与 struct 变量有相同的内存布局和字节对齐方式
静态成员变量:存储于全局数据区中
成员函数:存储于代码段中。
class C2
{
public:
int i;
int j;
int k;
static int m; //4 静态成员变量 不会放到对象里面
public:
int getK() const { return k; } //4
void setK(int val) { k = val; } //4
protected:
private:
};
C2的大小为12,因为静态变量存储在全局数据区域中,成员函数存储于代码段中,留给class C2的大小其实只有12个,也就是所有普通变量的大小。

本文深入探讨了C++类中成员变量与成员函数的存储机制。解释了普通成员变量如何与struct变量共享相似的内存布局,静态成员变量为何位于全局数据区,以及成员函数为何存在于代码段中。通过实例C2,展示了类大小的计算方法,揭示了静态变量与成员函数不占用对象内存空间的原理。
452

被折叠的 条评论
为什么被折叠?



