public :
virtual void foo(void)
{
printf("base");
}
};
class CLA1:public base
{
public :
virtual void foo(void)
{
printf("CLA1\n");
}
};
class CLA2:public base
{
public :
virtual void foo(void)
{
printf("CLA2\n");
}
};
在main中:
CLA1 CLA1_obj;
CLA2 CLA2_obj;
CLA1 *pCLA1=&CLA1_obj;
CLA2 *pCLA2=&CLA2_obj;
memcpy(pCLA1,pCLA2,sizeof(CLA2));
pCLA1->foo();
pCLA2->foo();
CLA1_obj.foo();
CLA2_obj.foo();
当然调试可以看到vptr在拷贝后都指向了同一个入口地址。