fork(6) download
  1. #include <iostream>
  2. #include <array>
  3. #include <memory>
  4.  
  5. class Base {
  6. public:
  7. virtual ~Base() {
  8. std::cout << "Base destroyed\n";
  9. }
  10.  
  11. virtual void hello() {
  12. std::cout << "This shouldn't print\n";
  13. }
  14. };
  15.  
  16. class Child1 : public Base {
  17. public:
  18. ~Child1() override {
  19. std::cout << "Child1 destroyed\n";
  20. }
  21.  
  22. void hello() override {
  23. std::cout << "Hi from child 1!\n";
  24. }
  25. };
  26.  
  27. class Child2 : public Base {
  28. public:
  29. ~Child2() override {
  30. std::cout << "Child2 destroyed\n";
  31. }
  32.  
  33. void hello() override {
  34. std::cout << "Hi from child 2!\n";
  35. }
  36. };
  37.  
  38. int main() {
  39. std::array<std::unique_ptr<Base>, 2> array = {
  40. std::make_unique<Child1>(),
  41. std::make_unique<Child2>()
  42. };
  43.  
  44. for (auto &i : array) {
  45. i->hello();
  46. }
  47. }
Success #stdin #stdout 0s 5512KB
stdin
Standard input is empty
stdout
Hi from child 1!
Hi from child 2!
Child2 destroyed
Base destroyed
Child1 destroyed
Base destroyed