fork download
  1. #include <iostream>
  2.  
  3. class A
  4. {
  5. int a;
  6.  
  7. protected:
  8. explicit A(int x): a(x) { std::cout << "A::A(int)" << std::endl; }
  9.  
  10. public:
  11. A(): a(0) { std::cout << "A::A()" << std::endl; }
  12. A(const A &copy): a(copy.a) { std::cout << "A::A(const A&)" << std::endl; }
  13.  
  14. int data() const { return a; }
  15. };
  16.  
  17. class B: public A
  18. {
  19. int b;
  20. public:
  21. B(): A(1), b(123) {}
  22. int get() const { return b; }
  23. };
  24.  
  25. class C: public A
  26. {
  27. int c;
  28. public:
  29. C(): A(2), c(321) {}
  30. int get() const { return c; }
  31. };
  32.  
  33. int main()
  34. {
  35. B b;
  36. C c;
  37.  
  38. static_cast<A&>(b) = c;
  39. std::cout << b.data() << '\t' << b.get() << std::endl;
  40. }
  41.  
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
A::A(int)
A::A(int)
2	123