Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <set>
- #include <string>
- #include <iostream>
- #include <vector>
- using namespace std;
- // Человек
- class Person {
- public:
- Person(string name, int age, string gender) : name_(name), age_(age), gender_(gender) {};
- string GetName() const {
- return name_;
- }
- int GetAge() const {
- return age_;
- }
- string GetGender() const {
- return gender_;
- }
- private:
- string name_;
- int age_;
- string gender_;
- };
- // Рабочий. Владеет несколькими специальностями
- class Worker : public Person {
- public:
- Worker(string name, int age, string gender) : Person(name, age, gender) {};
- void AddSpeciality(string speciality) {
- specialties_.insert(speciality);
- }
- bool HasSpeciality(string speciality) const {
- return specialties_.count(speciality);
- }
- string Work() {
- return "Я работаю";
- }
- private:
- set<string> specialties_;
- };
- //
- class Painter : public Worker {
- public:
- Painter(string name, int age, string gender) : Worker(name, age, gender) {};
- string Work() {
- return "Я крашу";
- }
- };
- class Driver : public Worker {
- public:
- Driver(string name, int age, string gender) : Worker(name, age, gender) {};
- string Work() {
- return "Я везу";
- }
- };
- class Builder : public Worker {
- public:
- Builder(string name, int age, string gender) : Worker(name, age, gender) {};
- string Work() {
- return "Я строю";
- }
- };
- int main() {
- setlocale(LC_ALL, "ru");
- Painter pn("Света", 25, "woman");
- Driver dr("Игорь", 33, "man");
- Builder bd("Женя", 23, "man");
- vector<Worker*> workers;
- workers.push_back(&pn);
- workers.push_back(&dr);
- workers.push_back(&bd);
- for (auto a : workers) {
- cout << a->GetName() << " " << a->GetAge() << " " << a->GetGender() << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement