虚拟继承类和多态的大小

时间:2017-10-04 10:30:48

标签: c++ oop

我尝试编写一个程序来测试类的大小,如下所示:

#include<iostream>
using namespace std;
class A
{
public:
  long a;
  virtual void f()
  {
     cout<<"A";
  }
};
class B: public virtual A
{
 public:
   void f()
   {
     cout<<"B";
   }
};
int main()
{
    cout<<sizeof(B)<<endl; //16
    return 0;
}

我知道B类中的每个对象都包含一个long类型变量和两个指向2个vtable的指针(一个用于多态,一个用于虚拟继承,每个指针都是4bytes,因为我使用的是64位CPU)。所以它应该是12个字节,但这个程序的结果是16.有人可以解释一下吗?谢谢大家!

0 个答案:

没有答案