C++中计算类对象的大小

it2024-12-06  13

计算类对象的大小

计算类对象的大小只需要将类中的成员变量加起来,同时注意内存对齐。 例

class A { public: void SetAInfo(const char* name, char* gender ,char age) { } private: char _name[20]; char _gender[3]; int _age; }; int main() { cout << sizeof(A) << endl; return 0; }

根据结构体内存对齐规则

name是char型,对应到结构体变量偏移量为0的地址处。

gender是char型,对齐数为1,要对齐到对齐数的整数倍的位置,对应到偏移量为20的地址处。

age是int型,对齐数为4,要对齐到对齐数的整数倍的位置,对应到偏移量为23的地址处。

因此,sizeof结果为28。

空类

class A { public: void SetA(int a) { _a = a; } private: int _a; }; class B { public: void test(B) {} }; class C {}; int main() { cout << sizeof(A) << endl; cout << sizeof(B) << endl; cout << sizeof(C) << endl; return 0; }

sizeof结果为4,1,1

空类有大小

原因: 假设在C中定义c1,c2,c3三个不同对象,若空类大小为0,那么c1,c2,c3将存储在相同的空间中,c1,c2,c3成为相同对象,假设错误。

因此,空类存在大小,目的是为了区分空类定义出来的不同对象。

在主流的编译器(如VS,g++)中,空类的大小为1。

最新回复(0)