fork download
  1. #include <iostream>
  2.  
  3. // base class
  4. class Animal {
  5. public:
  6. virtual void talk() = 0; // we don't provide any implementation here
  7. virtual ~Animal() {} // destructor must be virtual
  8. };
  9.  
  10. // derived classes
  11. class Cat: public Animal {
  12. public:
  13. Cat()
  14. {
  15. std::cout << "I want Whiskas!" << std::endl;
  16. }
  17.  
  18. ~Cat()
  19. {
  20. std::cout << "Meooooooouuuchhh!" << std::endl;
  21. }
  22.  
  23. void talk()
  24. {
  25. std::cout << "Meow!" << std::endl;
  26. }
  27. };
  28.  
  29. class Dog: public Animal {
  30. public:
  31. Dog()
  32. {
  33. std::cout << "I want Pedigree!" << std::endl;
  34. }
  35.  
  36. ~Dog()
  37. {
  38. std::cout << "Woooooaaaaaaaaaargghhhh!" << std::endl;
  39. }
  40.  
  41. void talk()
  42. {
  43. std::cout << "Woof!" << std::endl;
  44. }
  45. };
  46.  
  47. class Human: public Animal {
  48. public:
  49. Human()
  50. {
  51. std::cout << "I want pizza!" << std::endl;
  52. }
  53.  
  54. ~Human()
  55. {
  56. std::cout << "Yahooooowl!" << std::endl;
  57. }
  58.  
  59. void talk()
  60. {
  61. std::cout << "Hello!" << std::endl;
  62. }
  63. };
  64.  
  65. int main()
  66. {
  67. Animal *zoo[3];
  68.  
  69. zoo[0] = new Cat;
  70. zoo[1] = new Dog;
  71. zoo[2] = new Human;
  72.  
  73. zoo[0]->talk();
  74. zoo[1]->talk();
  75. zoo[2]->talk();
  76.  
  77. delete zoo[0];
  78. delete zoo[1];
  79. delete zoo[2];
  80. }
  81.  
Success #stdin #stdout 0.02s 2816KB
stdin
Standard input is empty
stdout
I want Whiskas!
I want Pedigree!
I want pizza!
Meow!
Woof!
Hello!
Meooooooouuuchhh!
Woooooaaaaaaaaaargghhhh!
Yahooooowl!