C++中结构体可以包含函数,当含有函数时,结构体所占内存还是只有成员变量的大小吗?
进行如下实验
// 设置内存对齐方式
#pragma pack(push) // 保存对齐状态
#pragma pack(1) // 设定为1字节对齐
typedef struct TEST
{
char a;
char b;
TEST()
{
a = 1;
}
~TEST()
{
a = 1;
}
void voidTEST()
{
a = 1;
}
void virtual Test()
{
a = 1;
}
} ST_TEST;
void Test()
{
ST_TEST test;
int c = sizeof(test);
int d = c;
}
#pragma pack(pop) // 保存对齐状态
实验结果:
c = 6
如果没有虚函数VTest,则c = 2
结论:和类一样,如果有虚函数,则实例中多出一个虚函数列表指针