Advertisement
35657

Untitled

May 11th, 2024
450
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 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. // Рабочий.Владеет несколькими специальностями
  34. class Worker : public Person {
  35. public:
  36.     Worker(string name, int age, string gender) : Person(name, age, gender) {};
  37.  
  38.     void AddSpeciality(string speciality) {
  39.         specialties_.insert(speciality);
  40.     }
  41.     bool HasSpeciality(string speciality) const {
  42.         return specialties_.count(speciality);
  43.     }
  44.  
  45.     virtual string Work() {
  46.         return "Я работаю";
  47.     }
  48.  
  49. private:
  50.     set<string> specialties_;
  51. };
  52.  
  53. class Painter : public Worker {
  54. public:
  55.     Painter(string name, int age, string gender) : Worker(name, age, gender) {};
  56.  
  57.     string Work() {
  58.         return "Я крашу";
  59.     }
  60. };
  61.  
  62. class Driver : public Worker {
  63. public:
  64.     Driver(string name, int age, string gender) : Worker(name, age, gender) {};
  65.  
  66.     string Work() {
  67.         return "Я везу";
  68.     }
  69. };
  70.  
  71. class Builder : public Worker {
  72. public:
  73.     Builder(string name, int age, string gender) : Worker(name, age, gender) {};
  74.  
  75.     string Work() {
  76.         return "Я строю";
  77.     }
  78. };
  79.  
  80. int main() {
  81.     setlocale(LC_ALL, "ru");
  82.  
  83.     Painter pn("Света", 25, "woman");
  84.     Driver dr("Игорь", 33, "man");
  85.     Builder bd("Женя", 23, "man");
  86.  
  87.     vector<Worker*> workers;
  88.  
  89.     workers.push_back(&pn);
  90.     workers.push_back(&dr);
  91.     workers.push_back(&bd);
  92.  
  93.     for (auto a : workers) {
  94.         cout << a->GetName() << " " << a->GetAge() << " " << a->GetGender() << " " << a->Work() << endl; // теперь все работает как надо
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement