親が仮想関数を持つオブジェクトへのポインターを親型のメソッドに渡すと、結果のオブジェクトで親メンバーの奇妙なコピーが発生します。
子 -> 親 -> 子
someMethod(Parent * obj);
Parent
virtual ~Parent() {}
Child : public Parent()
Child childobj = new Child();
someMethod(childobj);
soemMethod を介して渡された後にメモリ内で表示すると、次のような結果のオブジェクトが表示されます。
DATA[]
parentvar1
parentvar2
Child[]
->Child[]
->childvar1
->childvar2
->Parent[]
->->Parent[]
->->parentvar1
->->parentvar2
親データがインデックス 0 とインデックス 2 の両方で複製されているのはなぜですか?