我运行了以下代码。
#include <iostream>
using namespace std;
class Base
{
char c;
public:
virtual ~Base()
{
}
};
int main()
{
cout << sizeof(Base) << endl;
return 0;
}
1)大小为4(对于vptr)+ 1(对于char)。但结果是8.为什么会这样?
2)我用一个int变量替换了char,输出仍然是8.有人可以解释一下导致这个问题的原因吗?
答案 0 :(得分:3)
它归结为填充。编译器已将您的类打包为4个字节的倍数。