fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. class Foo
  5. {
  6. public:
  7. Foo(int a, int b) : a(a), b(b) {}
  8. int a, b;
  9. };
  10.  
  11. class Bar : public Foo
  12. {
  13. public:
  14. Bar(int a, int b, int c, int d, int e, int f) :
  15. Foo(a, b), c(c), d(d), e(e), f(f) {}
  16. void print()
  17. {
  18. std::cout << a << " " << b << " " << c << " " << d << " " << e << " " << f << '\n';
  19. }
  20. int c, d, e, f;
  21. };
  22.  
  23.  
  24. int main(int argc, char** argv)
  25. {
  26. Bar bar0(0, 1, 2, 3, 4, 5);
  27. Bar bar1(6, 7, 8, 9, 10, 11);
  28.  
  29. std::cout << "bar0 ";
  30. bar0.print();
  31. std::cout << "bar1 ";
  32. bar1.print();
  33.  
  34. std::vector<Foo> store;
  35. store.push_back(bar0);
  36. store.push_back(bar1);
  37.  
  38. auto downcast0 = static_cast<Bar*>(&store[0]);
  39. auto downcast1 = static_cast<Bar*>(&store[1]);
  40.  
  41. std::cout << "downcast0 ";
  42. downcast0->print();
  43. std::cout << "downcast1 ";
  44. downcast1->print();
  45.  
  46. system("pause");
  47. }
Success #stdin #stdout #stderr 0s 4448KB
stdin
Standard input is empty
stdout
bar0 0 1 2 3 4 5
bar1 6 7 8 9 10 11
downcast0 0 1 6 7 0 0
downcast1 6 7 0 0 57681 0
stderr
sh: 1: pause: not found