fork download
  1. #include <iostream>
  2.  
  3. class Animal
  4. {
  5. public:
  6. Animal() { std::cout << "Animal::Animal" << std::endl; }
  7. virtual ~Animal() { std::cout << "Animal::~Animal" << std::endl; }
  8. virtual void DoSound() {}
  9. };
  10.  
  11. class Cat : public Animal
  12. {
  13. public:
  14. Cat() { std::cout << "Cat::Cat" << std::endl; }
  15. ~Cat() { std::cout << "Cat::~Cat" << std::endl; }
  16. void DoSound() { std::cout << "Mew!" << std::endl; }
  17. };
  18.  
  19. class Dog : public Animal
  20. {
  21. public:
  22. Dog() { std::cout << "Dog::Dog" << std::endl; }
  23. ~Dog() { std::cout << "Dog::~Dog" << std::endl; }
  24. void DoSound() { std::cout << "Wow" << std::endl; }
  25. };
  26.  
  27. class Frog : public Animal
  28. {
  29. public:
  30. Frog() { std::cout << "Frog::Frog" << std::endl; }
  31. ~Frog() { std::cout << "Frog::~Frog" << std::endl; }
  32. void DoSound() { std::cout << "Croc!" << std::endl; }
  33. };
  34.  
  35. int main()
  36. {
  37. Animal* animal1 = new Cat();
  38. Animal* animal2 = new Dog();
  39. Animal* animal3 = new Frog();
  40.  
  41. animal1->DoSound();
  42. animal2->DoSound();
  43. animal3->DoSound();
  44.  
  45. delete animal1;
  46. delete animal2;
  47. delete animal3;
  48.  
  49. return 0;
  50. }
  51.  
Success #stdin #stdout 0.01s 2820KB
stdin
Standard input is empty
stdout
Animal::Animal
Cat::Cat
Animal::Animal
Dog::Dog
Animal::Animal
Frog::Frog
Mew!
Wow
Croc!
Cat::~Cat
Animal::~Animal
Dog::~Dog
Animal::~Animal
Frog::~Frog
Animal::~Animal