Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
478
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.91 KB | None | 0 0
  1. //Создать базовый класс «Домашнее животное» и производные
  2. //классы «Собака», «Кошка», «Попугай», «Хомяк».
  3. //С помощью конструктора установить имя каждого животного и его характеристики.
  4. //Реализуйте для каждого из классов функции :
  5. //Sound – издает звук животного(пишем текстом в консоль);
  6. //Show – отображает имя животного;
  7. //Type – отображает название его подвида.
  8.  
  9. #include <string>
  10. #include <iostream>
  11. using namespace std;
  12.  
  13. class Animal
  14. {
  15. protected:
  16. string name;
  17. public:
  18. Animal(string name)
  19. : name(name)
  20. {
  21. }
  22.  
  23. virtual void Say() = 0;
  24. virtual void Nick() = 0;
  25. };
  26.  
  27. class Dog : public Animal
  28. {
  29. public:
  30. Dog(string name) : Animal(name)
  31. {
  32. }
  33.  
  34. void Say()
  35. {
  36. cout << name << " speak gav-gav" << endl;
  37. }
  38. void Nick()
  39. {
  40. cout << name << " name Dog#1" << endl;
  41. }
  42. };
  43.  
  44. class Cat : public Animal
  45. {
  46. public:
  47. Cat(string name) : Animal(name)
  48. {
  49. }
  50.  
  51. void Say()
  52. {
  53. cout << name << " speak may-may" << endl;
  54. }
  55. void Nick() ////override - проверка на опечатку
  56. {
  57. cout << name << " name Cat#1" << endl;
  58. }
  59. };
  60.  
  61. class Bird : public Animal
  62. {
  63. public:
  64. Bird(string name) : Animal(name)
  65. {
  66. }
  67.  
  68. void Say() override
  69. {
  70. cout << name << " speak kray-kray" << endl;
  71. }
  72. void Nick() override
  73. {
  74. cout << name << " name Bird#1" << endl;
  75. }
  76. };
  77.  
  78.  
  79. int main()
  80. {
  81. /*Animal * animals[3] = {
  82. new Dog("Dog"),
  83. new Cat("Cat"),
  84. new Bird("Bird")
  85. };*/
  86. Dog dog("Dog");
  87. Cat cat("Cat");
  88. Bird bird("Bird");
  89.  
  90. std::reference_wrapper<Animal> animals[3] = {
  91. dog,
  92. cat,
  93. bird
  94. };
  95.  
  96.  
  97. for (int i = 0; i < 3; ++i)
  98. {
  99. ((Animal&)(animals[i])).Say();
  100. ((Animal&)(animals[i])).Nick();
  101. /*animals[i]->Say();
  102. animals[i]->Nick();*/
  103. }
  104.  
  105. system("pause");
  106. return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement