ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

多重継承したクラスのインスタンスのポインタ

多重継承したクラスのインスタンスを作成して、そのポインタを親クラスのポインタに代入すると継承順番によって値が異なる。

#include <stdio.h>

class BaseA
{
};

class BaseB
{
};

class Test : public BaseA, public BaseB
{
};

int main()
{
    Test* pTest = new Test();
    BaseA *pA = pTest;
    BaseB *pB = pTest;

    printf("%p,%p,%p\n", pTest, pA, pB);
}

実行結果は次のとおり。

00902F14,00902F14,00902F1C

こういう結果になるとは知らなかった。すべて同じ値になると思ってコードを書いていた。