多重継承したクラスのインスタンスを作成して、そのポインタを親クラスのポインタに代入すると継承順番によって値が異なる。
#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
こういう結果になるとは知らなかった。すべて同じ値になると思ってコードを書いていた。