您的位置:首页 > 编程语言 > C语言/C++

C++中各种空类以及继承空类后的sizeof大小

2011-09-28 11:49 381 查看
#include <iostream>                                                                           

using namespace std;

class A1

{

};

class A2

{

};

class B1 : public A1

{

};

class B2 : public A1, public A2

{

};

class B3 : public virtual A1

{
};

class B4 : public virtual A1, public virtual A2

{

};

class B5 : public A1, public virtual A2

{

};  

class C1 : public A1

{

    char a;

    char b;

};

class C2 : public virtual A1

{

    char a;

    char b;

};

int main(int argc, char *argv[])

{

    cout << "sizeof(A1): " << sizeof(A1) << endl;

    cout << "sizeof(B1 : A1): " << sizeof(B1) << endl;

    cout << "sizeof(B2 : A1, A2): " << sizeof(B2) << endl;

    cout << "sizeof(B3 : virtual A1): " << sizeof(B3) << endl;

    cout << "sizeof(B4 : virtual A1, virtual A2): " << sizeof(B4) << endl;

    cout << "sizeof(B5 : A1, virtual A2): " << sizeof(B5) << endl;

    cout << "sizeof(C1 : A1): " << sizeof(C1) << endl;

    cout << "sizeof(C2 : virtual A1): " << sizeof(C2) << endl;

    return 0;

}                       

结果是:

sizeof(A1): 1

sizeof(B1 : A1): 1

sizeof(B2 : A1, A2): 1

sizeof(B3 : virtual A1): 4

sizeof(B4 : virtual A1, virtual A2): 4

sizeof(B5 : A1, virtual A2): 4

sizeof(C1 : A1): 2

sizeof(C2 : virtual A1): 8     //涉及到字节对其所以是8

由于virtual继承涉及到虚函数表(虚函数指针)所以sizeof为4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ class iostream include c