Multiple Inheritance : size of class for virtual pointers?

后端 未结 4 1091
星月不相逢
星月不相逢 2020-12-06 19:11

Given the code:

class A{};

class B : public virtual A{};

class C : public virtual A{};

class D : public B,public C{};

int main(){
cout<<\"sizeof(D)         


        
4条回答
  •  执笔经年
    2020-12-06 19:44

    It depends on compiler implementation. My compiler is Visual Stdio C++ 2005.

    Code like this:

    int main(){
        cout<<"sizeof(B):"<

    It will output

    sizeof(B):4
    sizeof(C):4
    sizeof(D):8
    

    class B has only one virtual pointer. So sizeof(B)=4. And class C is also.

    But D multiple inheritance the class B and class C. The compile don't merge the two virtual table.So class D has two virtual pointer point to each virtual table.

    If D only inheritance one class and not virtual inheritance. It will merge they virtual table.

提交回复
热议问题