Advertisement
35657

Untitled

May 11th, 2024
422
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.26 KB | None | 0 0
  1. #include <set>
  2. #include <string>
  3. #include <iostream>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8.  
  9. // Человек
  10. class Person {
  11. public:
  12.     Person(string name, int age, string gender) : name_(name), age_(age), gender_(gender) {};
  13.  
  14.     string GetName() const {
  15.         return name_;
  16.     }
  17.     int GetAge() const {
  18.         return age_;
  19.     }
  20.     string GetGender() const {
  21.         return gender_;
  22.     }
  23.  
  24. private:
  25.     string name_;
  26.     int age_;
  27.     string gender_;
  28. };
  29.  
  30.  
  31.  
  32. // Рабочий.Владеет несколькими специальностями
  33. class Worker : public Person {
  34. public:
  35.     Worker(string name, int age, string gender) : Person(name, age, gender) {};
  36.  
  37.     void AddSpeciality(string speciality) {
  38.         specialties_.insert(speciality);
  39.     }
  40.     bool HasSpeciality(string speciality) const {
  41.         return specialties_.count(speciality);
  42.     }
  43.  
  44.     string Work() {
  45.         return "Я работаю";
  46.     }
  47.  
  48. private:
  49.     set<string> specialties_;
  50. };
  51.  
  52. class Painter : public Worker {
  53. public:
  54.     Painter(string name, int age, string gender) : Worker(name, age, gender) {};
  55.  
  56.     string Work() {
  57.         return "Я крашу";
  58.     }
  59. };
  60.  
  61. class Driver : public Worker {
  62. public:
  63.     Driver(string name, int age, string gender) : Worker(name, age, gender) {};
  64.  
  65.     string Work() {
  66.         return "Я везу";
  67.     }
  68. };
  69.  
  70. class Builder : public Worker {
  71. public:
  72.     Builder(string name, int age, string gender) : Worker(name, age, gender) {};
  73.  
  74.     string Work() {
  75.         return "Я строю";
  76.     }
  77. };
  78.  
  79. int main() {
  80.     setlocale(LC_ALL, "ru");
  81.  
  82.     Painter pn("Света", 25, "woman");
  83.     Driver dr("Игорь", 33, "man");
  84.     Builder bd("Женя", 23, "man");
  85.  
  86.     vector<Worker*> workers;
  87.  
  88.     workers.push_back(&pn);
  89.     workers.push_back(&dr);
  90.     workers.push_back(&bd);
  91.  
  92.     cout << pn.Work() << endl; // здесь выводится метод Work() наследника
  93.     cout << dr.Work() << endl;
  94.     cout << bd.Work() << endl;
  95.  
  96.  
  97.     cout << endl << endl;
  98.  
  99.     for (auto a : workers) {
  100.         cout << a->GetName() << " " << a->GetAge() << " " << a->GetGender() << " " << a->Work() << endl; // здесь выводится метод Work() родителя
  101.     }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement