次のコード:
#include <stdio.h>
class Parent
{
public:
virtual void func() {printf("Parent\n");}
};
class Child1 : public Parent
{
virtual void func() {printf("Child1\n");}
};
class Child2 : public Parent
{
virtual void func() {printf("Child2\n");}
};
int main(int argc, char* argv[])
{
Parent & obj = Child1();
obj.func();
obj = Child2();
obj.func();
return 0;
}
次の結果が得られます。
expected: Child1 Child2.
actual: Child1 Child1.
(VS2010でコンパイル)
vptrは割り当てによって変更されないと思います。それを再作成させる方法はありますか(Parentへのポインターを使用してnewを使用して割り当てる以外)?
ありがとう