0
点赞
收藏
分享

微信扫一扫

虚继承类长度


#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

举报

相关推荐

0 条评论