Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <set>
- #include <string>
- #include <iostream>
- 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 Programmer : public Person {
- public:
- Programmer(string name, int age, string gender) : Person(name, age, gender) {}; // если нет конструктора по умолчанию, а есть параметризованный конструктор, то обязательно вызываем его
- void AddProgrammingLanguage(string language) {
- programming_languages_.insert(language);
- }
- bool CanProgram(string language) const {
- return programming_languages_.count(language);
- }
- private:
- set<string> programming_languages_;
- };
- // Рабочий. Владеет несколькими специальностями
- 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);
- }
- private:
- set<string> specialties_;
- };
- int main() {
- Programmer pr("Ivan", 22, "man");
- Worker wk("Gena", 23, "man");
- pr.AddProgrammingLanguage("Java");
- cout << boolalpha << pr.CanProgram("Java") << endl;
- cout << pr.GetName() << " " << pr.GetAge() << endl; // наряду с собственными методами, класс-наследник может пользоваться родительскими
- cout << wk.GetName() << " " << wk.GetAge() << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement