#include <stdio.h>
class Base{
public:
virtual void vfunc() { puts("Base::vfunc()"); }
};
class Derived: public Base
{
public:
virtual void vfunc() { puts("Derived::vfunc()"); }
};
#include <string.h>
int main()
{
Derived d;
Base b_assign = d;
Base b_memcpy;
memcpy(&b_memcpy, &d, sizeof(Base));
Base *p_assign = &b_assign;
Base *p_memcpy = &b_memcpy;
p_assign->vfunc();
p_memcpy->vfunc();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CmNsYXNzIEJhc2V7CnB1YmxpYzoKCXZpcnR1YWwgdm9pZCB2ZnVuYygpIHsgcHV0cygiQmFzZTo6dmZ1bmMoKSIpOyB9Cn07CmNsYXNzIERlcml2ZWQ6IHB1YmxpYyBCYXNlCnsKcHVibGljOgoJdmlydHVhbCB2b2lkIHZmdW5jKCkgeyBwdXRzKCJEZXJpdmVkOjp2ZnVuYygpIik7IH0KfTsKI2luY2x1ZGUgPHN0cmluZy5oPgppbnQgbWFpbigpCnsKCURlcml2ZWQgZDsKCUJhc2UgYl9hc3NpZ24gPSBkOwoJQmFzZSBiX21lbWNweTsKCW1lbWNweSgmYl9tZW1jcHksICZkLCBzaXplb2YoQmFzZSkpOwoJCglCYXNlICpwX2Fzc2lnbiA9ICZiX2Fzc2lnbjsKCUJhc2UgKnBfbWVtY3B5ID0gJmJfbWVtY3B5OwoJcF9hc3NpZ24tPnZmdW5jKCk7CglwX21lbWNweS0+dmZ1bmMoKTsKCXJldHVybiAwOwp9Cg==