【发布时间】:2018-06-03 08:26:05
【问题描述】:
我不理解下面显示的输出。
我知道,只要存在虚函数,它就会创建一个 vptr,但打印的大小仍然超出我的预期:
#include<iostream>
using namespace std;
class Base
{
int x;
int y;
int z;
public:
virtual void fun(){}
virtual void fun2(){}
};
class Derived:public Base
{
public:
void fun() override {}
};
int main(int argc, char const *argv[])
{
cout<<sizeof(Base)<<endl;
cout<<sizeof(Derived)<<endl;
cout<<sizeof(int)<<endl;
}
24
24
4
[0.3s完成]
【问题讨论】:
-
我认为没有填充发生
-
sizeof(Base) = sizeof(void *) + sizeof(int) * 3与sizeof(void *)对齐,即 8 个字节。 -
@hauron 哎呀!谢谢。