fork download
  1. #include <iostream>
  2. #include <memory>
  3. #include <random>
  4. #include <vector>
  5.  
  6. class Base
  7. {
  8. public:
  9. virtual void foo() = 0;
  10.  
  11. virtual ~Base()
  12. {}
  13. };
  14.  
  15. class DerivedA : public Base
  16. {
  17. public:
  18. virtual void foo()
  19. {
  20. std::cout << "Hello from DerivedA!\n";
  21. }
  22. };
  23.  
  24. class DerivedB : public Base
  25. {
  26. public:
  27. virtual void foo()
  28. {
  29. std::cout << "Hello from DerivedB!\n";
  30. }
  31. };
  32.  
  33. int main()
  34. {
  35. std::vector<std::unique_ptr<Base>> bases;
  36.  
  37. std::default_random_engine e(3765928);
  38. std::uniform_int_distribution<> d(0, 1);
  39.  
  40. for (std::size_t i = 100; i-- != 0; )
  41. {
  42. if (d(e))
  43. bases.push_back(std::unique_ptr<DerivedA>(new DerivedA));
  44. else
  45. bases.push_back(std::unique_ptr<DerivedB>(new DerivedB));
  46. }
  47.  
  48. for (auto i = bases.begin(); i != bases.end(); ++i)
  49. (*i)->foo();
  50. }
Success #stdin #stdout 0s 3064KB
stdin
Standard input is empty
stdout
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedA!
Hello from DerivedA!
Hello from DerivedB!
Hello from DerivedB!
Hello from DerivedB!