以下代码:
#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 分配给它)?
谢谢