fork download
  1. // Copyright 2016 Aleksandr Mikhailov
  2.  
  3. #include <bits/stdc++.h>
  4.  
  5. class A {
  6. public:
  7. virtual void f() {
  8. std::cout << "A::f()" << std::endl;
  9. }
  10. virtual void g() {
  11. std::cout << "A::g()" << std::endl;
  12. }
  13. };
  14.  
  15. class B {
  16. public:
  17. virtual void f() {
  18. std::cout << "B::f()" << std::endl;
  19. }
  20. virtual void g() {
  21. std::cout << "B::g()" << std::endl;
  22. }
  23. };
  24.  
  25. int main() {
  26. std::ios_base::sync_with_stdio(false);
  27. std::cin.tie(nullptr);
  28. A * p_a = new A();
  29. B * p_b = new B();
  30. p_a->f();
  31. p_a->g();
  32. p_b->f();
  33. p_b->g();
  34. size_t * vptr_a = reinterpret_cast<size_t *>(p_a);
  35. size_t * vptr_b = reinterpret_cast<size_t *>(p_b);
  36. std::swap(*vptr_a, *vptr_b);
  37. p_a->f();
  38. p_a->g();
  39. p_b->f();
  40. p_b->g();
  41. return 0;
  42. }
  43.  
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
A::f()
A::g()
B::f()
B::g()
B::f()
B::g()
A::f()
A::g()