C++空クラスと多重継承空クラスはメモリ領域を占有する

1771 ワード

1、コード結果で出力
#include <iostream>



using namespace std;



class A {};



class A2 {};



class B : public A {};



class C : public A, public A2 {};



class D : public virtual B {};





int main()

{

    cout << sizeof(A) << endl;

    cout << sizeof(B) << endl;

    cout << sizeof(C) << endl;

    cout << sizeof(D) << endl;    

    

    return 0;



}

 
2、結果
1

1

1

4

 
3、分析
空のクラスが占める内部空間は1です.
単一継承または多重継承空クラスの空クラスが占める空間は1ですか?
しかし、虚継承は虚ポインタに関し、ポインタサイズは4であるため、虚継承後の空クラスが占める空間は4である.