sizeofはどう計算すればいいの?


まず、空のクラスのsizeofについて、0ではなく、一般的に1であることはよく知られていますが、なぜかというと、初期のC++コンパイラでは、この値は0ですが、作成されたオブジェクトはその後のオブジェクトと同じアドレスを持つため、現在の多くのコンパイラではこの値は1です.空でない場合は、次の例を見てみましょう.
class A
{
    int a;
    char b;
public:
    virtual funA();
    virtual funB();
    funC();
    static funD();
    static int c();
};

sizeof(A)がどのくらい最初にクラスのメンバー割り当て空間に対してバイトが整列しているかを尋ねると、8バイトを占めます.虚関数の場合、いくつかの虚関数にかかわらず、虚関数テーブルは1枚しか作成されず、クラスにはポインタが必要であるため、4バイトを占めています.通常の関数では、sizeof計算に計上されないスタックに格納される空間です.staticタイプのメンバーは、クラスのすべてのオブジェクトによって共有され、sizeof計算のスペースにも計上されません.したがって、答えは12(32コンパイラ)です.