fork download
  1. #include <stdio.h>
  2. class Base{
  3. public:
  4. virtual void vfunc() { puts("Base::vfunc()"); }
  5. };
  6. class Derived: public Base
  7. {
  8. public:
  9. virtual void vfunc() { puts("Derived::vfunc()"); }
  10. };
  11. #include <string.h>
  12.  
  13. int main()
  14. {
  15. Derived d;
  16. Base b_assign = d;
  17. Base b_memcpy;
  18. memcpy(&b_memcpy, &d, sizeof(Base));
  19.  
  20. b_assign.vfunc();
  21. b_memcpy.vfunc();
  22.  
  23. printf("sizeof Base : %d\n", sizeof(Base));
  24.  
  25. Base &b_ref = d;
  26. b_ref.vfunc();
  27.  
  28. printf("b_assign: %x; b_memcpy: %x; b_ref: %x\n",
  29. *(int *)&b_assign,
  30. *(int *)&b_memcpy,
  31. *(int *)&b_ref);
  32. return 0;
  33. }
  34.  
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
Base::vfunc()
Base::vfunc()
sizeof Base : 4
Derived::vfunc()
b_assign: 80487b4; b_memcpy: 8048780; b_ref: 8048780