fork download
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6.  
  7. class Animal {
  8. protected:
  9. const char *name;
  10. public:
  11. Animal(const char *name) { this->name = name; }
  12. virtual void play() = 0;
  13. virtual ~Animal() {}
  14. };
  15.  
  16. class Dog : public Animal {
  17. public:
  18. Dog(const char *name) : Animal(name) {}
  19. void play() {
  20. cout << "わんわん!" << name << "だよ" << endl;
  21. }
  22. virtual ~Dog() {}
  23. };
  24.  
  25. class Cat : public Animal {
  26. private:
  27. int sleep;
  28. public:
  29. Cat(const char *name, int sleep) : Animal(name) {
  30. this->sleep = sleep;
  31. }
  32. void play() {
  33. cout << "にゃあ!"<< name << "だよ" << endl;
  34. if(sleep == 1) {
  35. cout << "...でも寝る" << endl;
  36. }
  37. }
  38. virtual ~Cat() {}
  39. };
  40.  
  41. int main(int argc, char *argv[])
  42. {
  43. Animal *pets[] = {
  44. new Dog("ぽち"),
  45. new Cat("たま", 1)
  46. };
  47.  
  48. for(int i = 0; i < (sizeof pets / sizeof pets[0]); i++) {
  49. pets[i]->play();
  50. }
  51.  
  52. for(int i = 0; i < (sizeof pets / sizeof pets[0]); i++) {
  53. delete pets[i];
  54. }
  55. return 0;
  56. }
  57.  
Success #stdin #stdout 0s 5280KB
stdin
Standard input is empty
stdout
わんわん!ぽちだよ
にゃあ!たまだよ
...でも寝る