对于一个继承两次的类,有多少个v_tables

时间:2017-07-18 19:46:22

标签: c++

struct A 
{
    virtual void f1() {}
};

struct B: public A {};

struct C: public A {};

struct D: public B,public C {};

int main()
{
    cout<<sizeof(A)<<" "<<sizeof(B)<<" "<<sizeof(C)<<" "<<sizeof(D)<<endl;
    cout<<"_______"<<endl;
    return 0;
}
  1. 我系统中的输出(c9.o):8 8 8 16 这是否意味着D有2个虚拟指针到2个虚拟表?如果是的话,在哪里 是指针位置?

  2. 如果我们从f1中移除了struct A,则输出为:1 8 8 16。同样的问题也在这里。

  3. 如果我们不移除f1,现在BCA继承虚拟,则输出为:8 8 8 16。同样的问题也在这里。

0 个答案:

没有答案