说了这么久的 C++ 终于说到类了,还是从内存出发来讨论一下 C++ 的类在内存中的存储方式(之前写过一篇内存对齐的文章,类同样在一定程度上遵循内存对齐原则,不过比结构体复杂一下)
如有侵权,请联系删除,如有错误,欢迎大家指正,谢谢
0.空类
class Test {
};
Test t0;
cout << sizeof(t0) << endl;
// 运行结果:1
解释:
- 空类,没有任何成员变量和成员函数,编译器是支持空类实例化对象的,对象必须要被分配内存空间才有意义,这里编译器默认分配了 1Byte 内存空间(不同的编译器可能不同)
1. 含有成员变量的类
// ====== 测试一 ======
class Test {
private:
int i;
char c;
double d;
};
Test t11;
cout << sizeof(t11) << endl;
// 运行结果:16
// ====== 测试二 ======
class A{
};
class Test {
private:
int i;
char c;
double d;
A a;
};
Test t12;
cout << sizeof(t12)