fork download
  1. #include <iostream>
  2. #include <list>
  3.  
  4. struct Animal {
  5. virtual void say() {
  6. std::cout <<"I'm generic animal\n";
  7. }
  8.  
  9. virtual ~Animal(){}
  10. };
  11.  
  12. struct Cat : public Animal {
  13. virtual void say() {
  14. std::cout << "Meow\n";
  15. }
  16. virtual ~Cat(){}
  17. };
  18.  
  19. int main() {
  20. std::list<Animal*> l;
  21. l.push_back(new Animal);
  22. l.push_back(new Cat);
  23. for(Animal* ptr: l) {
  24. ptr->say();
  25. }
  26. for(Animal* ptr: l) {
  27. delete ptr; //not needed if you use smart pointers.
  28. }
  29. }
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
I'm generic animal
Meow