相关疑难解决方法(0)

在多重继承中理解vptr?

我试图理解书中有效的c ++语句.以下是多继承的继承图.

在此输入图像描述

在此输入图像描述

现在这本书说vptr需要每个类中的单独内存.它也做了以下声明

上图中的一个奇怪之处在于,即使涉及四个类,也只有三个vptrs.如果愿意,实现可以自由地生成四个vpt,但是三个就足够了(事实证明B和D可以共享一个vptr),并且大多数实现利用这个机会来减少编译器生成的开销.

我看不出有什么理由为什么每个类都要求为vptr提供单独的内存.我理解vptr是从基类继承的,可能是继承类型.如果我们假设它显示了带有继承的vptr的结果内存结构,那么它们如何才能生成该语句

B和D可以共享vptr

有人可以在多重继承中澄清一下vptr吗?

  • 我们每个班级都需要单独的vptr吗?
  • 如果以上是真的,为什么B和D可以共享vptr?

c++ multiple-inheritance virtual-inheritance vtable vptr

17
推荐指数
2
解决办法
5631
查看次数