欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

虚继承类长度

程序员文章站 2022-07-12 11:06:56
...
#include<iostream>
using namespace std;

class A{
    char k[3];//2.由于内存对齐,故它的长度也是4
public:
    virtual void aa(){}//1.它有一个虚指针,长度是4
};

//由于是虚继承要加上A的长度:8+8=16
class B:virtual public A{
    char j[3];
public:
    virtual void bb(){}
};

//非虚继承,只需加上普通指针的长度:8+4
class C:public A{
    char k[3];
public:
    virtual void cc(){}
};

//由于是虚继承加上B的长度:16+8=24
class D:virtual public B{
    char h[3];
public:
    virtual void dd(){}
};

int main()
{
    cout << sizeof(A) << endl;
    cout << sizeof(B) << endl;
    cout << sizeof(C) << endl;
    cout << sizeof(D) << endl;
}

8
16
12
24
相关标签: C C++ C# J#