关于C++虚函数原理的一段代码求解。

发布网友

我来回答

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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com