开发者社区> 问答> 正文

C++中虚基类中关于内存计算的问题

情况一:
class D{
public:
int a;
};
class A:virtual public D{
};
class B :virtual public D{
};
class C:public A,public B{
public:
int a1;
};
用sizeof(C)计算出等于16;
情况二:
class D{
public:
int a;
};
class A:public D{
};
class B :public D{
};
class C:public A,public B{
public:
int a1;
};
用sizeof(C)计算出等于12;
情况一本人理解不了哪位大神给分析分析吧

展开
收起
a123456678 2016-03-06 14:59:16 1763 0
1 条回答
写回答
取消 提交回答
  • frank_20080215说法就不对了。不是3个a的size

     #include <iostream>
    using namespace std;
    class D{
    public:
    int a;
    int b;
    };
    class A:virtual public D{
    };
    class B :virtual public D{
    };
    class C:public A,public B{
    public:
    int a1;
    };
    int main()
    {
        cout << sizeof(C);
    }
    结果是20。
    
    class D{
    public:
    int a;
    };
    class A:public D{
    };
    class B :public D{
    };
    class C:public A,public B{
    public:
    int a1;
    };
    int main()
    {
    cout << sizeof(D)<< endl;
    cout << sizeof(A)<< endl;
    cout << sizeof(C)<< endl;
    } 
    结果是4 4 12
    
      #include <iostream>
    using namespace std;
    class D{
    public:
    int a;
    };
    class A:virtual public D{
    };
    class B :virtual public D{
    };
    class C:public A,public B{
    public:
    int a1;
    };
    int main()
    {
    cout << sizeof(D)<< endl;
    cout << sizeof(A)<< endl;
    cout << sizeof(C)<< endl;
    } 

    结果是4 8 16

    2019-07-17 18:54:37
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载