破嗯哈不 2023-03-18 11:01 采纳率: 87.5%
浏览 29
已结题

C++继承虚基类后的大小怎么理解


#include<iostream>
using namespace std;
 
class A  //大小为4
{
public:
    int a;
};
class B :virtual public A  //大小为12,变量a,b共8字节,虚基类表指针4
{
public:
    int b;
};
class C :virtual public A //与B一样12
{
public:
    int c;
};
class D :public B, public C //24,变量a,b,c,d共16,B的虚基类指针4,C的虚基类指针
{
public:
    int d;
};
 
int main()
{
    A a;
    B b;
    C c;
    D d;
    cout << sizeof(a) << endl;
    cout << sizeof(b) << endl;
    cout << sizeof(c) << endl;
    cout << sizeof(d) << endl;
    system("pause");
    return 0;
}

我的运行结果:

4
24
24
48

与原文作者不同
附原文链接 https://blog.csdn.net/bxw1992/article/details/77726390?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167910674216800222860778%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167910674216800222860778&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-77726390-null-null.142^v74^insert_down4,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=c%2B%2B%E8%99%9A%E7%BB%A7%E6%89%BF&spm=1018.2226.3001.4187

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-03-18 11:02
    关注

    sizeof和不同编译器是有关的,不同很正常

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月26日
  • 已采纳回答 3月18日
  • 创建了问题 3月18日