- 空类占用一个空间。如果有任何成员需要占用空间,空类占用的一个空间不再有效。这一个空间相当于占位符,C++不允许不占用空间的类型。如果空类作为一个成员,则占用一个空间,相当于一个变量类型。如果继承空类,并且本身类有占用空间的成员,则空类的一个空间不再有效。
- static的变量不占用空间,因为存储在静态区域共享
- 函数不占用空间
- 虚函数占用空间,一个指针大小。不管是纯虚函数还是虚函数,因为需要构建虚函数表
- 继承带有虚函数的基类,子类与基类公用一个虚函数指针。如果继承多个虚函数基类,那么就是每个虚函数基类都要额外增加一个虚函数指针大小
class CTest1
{
};
class CTest2
{
void f() { cout << "a" << endl; }
};
class CTest3
{
virtual void f() { int i = 0; }
};
class CTest4
{
int a;
};
class CTest5
{
int a;
static int b;
};
class CTest6
{
virtual void f() = 0;
};
class CTest7
{
virtual void f() = 0;
virtual void f1() {};
};
enum MyEnum
{
A,
B,
C
};
class CTest8
{
MyEnum me;
};
int main() {
cout << sizeof(CTest1) << endl;
cout << sizeof(CTest2) << endl;
cout << sizeof(CTest3) << endl;
cout << sizeof(CTest4) << endl;
cout << sizeof(CTest5) << endl;
cout << sizeof(CTest6) << endl;
cout << sizeof(CTest7) << endl;
cout << sizeof(CTest8) << endl;
return 1;
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏