Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Листинг 15.2. Класс Employee
1: #include " String.hpp" 2: 3: class Employee 4: { 5: 6: public: 7: Employee(); 8: Employee(char *, char *, char > >, long); 9: ~Employee(); 10: Employee(const Employee&); 11: Employee & operator= (const Employee &); 12: 13: const String & GetFirstName() const 14: { return itsFirstName; } 15: const String & GetLastName() const { return itsLastName; } 16: const String & GetAddress() const { return itsAddress; } 17: long GetSalary() const { return itsSalary; } 18; 19: void SetFirstName(const String & fNama) 20: { itsFirstName = fName; } 21: void SetLastName(const String & lNama) 22: { itsLastName = lNamo; } 23: void SetAddress(const String & address) 24: { itsAddress = address; } 25: void SetSalary(long salary) { itsSalary = salary; } 26: private: 27: String itsFirstName; 28: String itsLastName; 29: String itsAddress; 30: long itsSalary; 31: }; 32: 33: Employee:: Employee(); 34: itsFirstName(" "), 35: itsLastName(" "), 36: itsAddress(" "), 37: itsSalary(0) 38: { } 39: 40: Employee:: Employee(char * firstName, char * lastName, 41: char * address, long salary): 42: itsFirstName(firstName), 43: itsLastName(lastName), 44: itsAddress(address), 45: itsSalary(salary) 46: { } 47: 48: Employee:: Employee(const Employee & rhs): 49: itsFirstName(rhs.GetFirstName()), 50: itsLastName(rhs, GetLastName()), 51: itsAddress(rhs, GetAddress()), 52: itsSalary(rhs.GetSalary()) 53: { } 54: 55: Employee:: ~Employea() { } 56: 57: Employee & Employae:: Qperator= (const Employee & rhs) 58: { 59: if (thls — & rhs) 60: return *this; 61: 62: itsFlrstName = rhs.GetFlrstName(); 63: itsLastName = rhs, GetLastName(); 64: itsAddress = rhs, GetAddress(); 65: itsSalary = rhs, GetSalary(); 66: 67: return *thls; 68: } 69: 70: int main() 71: { 72: Employee Edie(" Jane", " Doe", " 1461 Shore Parkway", 20000); 73: Edie.SetSalary(50000); 74: String LastName(" Levine"); 75: Edie.SetLastName(LastName); 76: Edie.SetFirstName(" Edythe"); 77: 78: cout < < " Имя: "; 79: cout < < Edie.GetFirstName().GetString(); 80: cout < < " " < < Edie.GetLastName().GetString(); 81: cout < < ".\nАдрес: "; 82: cout < < Edie.GetAddress().GetString(); 83: cout < < ".\nЗарплата: "; 84: cout < < Edie.GetSalary(); 85: return 0; 86: }
Примечание: Сохраните листинг 15.1 в файле с именем string. hpp. Затем всякий раз, когда понадобится класс String, вы сможете вставить листинг 15.1, просто добавив строку #include " String.hpp". Это первая строка в листинге 15.2.
Результат: Name: Edythe Levine. Address: 1461 Shore Parkway. Salary: 50000
Анализ: В листинге 15.2 объявляется класс Employee, переменными-членами которого выступают три объекта класса String — itsFirstName, itsLastName и itsAddress. В строке 72 создается объект Employee, который инициализируется четырьмя значениями. В строке 73 вызывается метод доступа SetSalary класса Employee, который принимает константное значение 50000. В реальной программе это значение определялось бы либо динамически в процессе выполнения программы, либо устанавливалось бы константой. В строке 74 создается и инициализируется строковой константой объект класса String, который в строке 75 используется в качестве аргумента функции SetLastName(). В строке 76 вызывается метод SetFirstName класса Employee с еще одной строковой константой в качестве параметра. Однако если вы обратитесь к объявлению класса Employee, то увидите, что в нем нет функции SetFirstName(), принимающей строку символов как аргумент. Для функции SetFirstName() в качестве параметра задана константная ссылка на объект String. Тем не менее компилятор не покажет сообщения об ошибке, поскольку в строке 9 листинга 15.1 объявлен конструктор, создающий объект String из строковой константы.
|