发布网友
共2个回答
热心网友
1、对比两个所谓的空类:
class m
{
void virtual f(){}
};
class n
{
virtual void virtual f(){}
};
在常用的编译器下,sizeof(m)是1,sizeof(n)是4。这是由于m中无数据成员,但是为了确保内存空间的唯一性,编译器会给m中添加一个隐含的char类型;n是4这个解释起来比较复杂,简单说是为了实现虚函数,编译器会在含有虚函数的类里添加一个一般称为vptr指针,这个指针指向虚函数表。
2、b和c没有添加任何数据成员,仅仅override函数,所有大小不变。
3、虚拟继承理解起来要复杂的多,这个例子也没有涉及到。
热心网友
我的理解是 4是定义的一个类所占的空间,而虚函数是没有占空间的,所以你再定义更多的虚函数也不增加原来的空类占的4空间追问不是这样理解的...一个空类所占空间为1