Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Упражнения. 1. Представьте объявление класса SimpleCircle (простая окружность) с единственной переменой-членом itsRadius (радиус)
1. Представьте объявление класса SimpleCircle (простая окружность) с единственной переменой-членом itsRadius (радиус). В классе должны использоваться конструктор и деструктор, заданные по умолчанию, а также метод установки радиуса. class SimpleCircle { public: SimpleCircle(); ~SimpleCircle(); void SetRadius(int); int GetRadiusO; private: int itsRadius; }; 2. Используя класс, созданный в упражнении!, с помошью конструктора, заданного по умолчанию, инициализируйте переменную itsRadius значением 5. SimpleCircle:: SimpleCircle(): itsRadius(5); { } 3. Добавьте в класс новый конструктор, который присваивает значение своего пара- метра переменной itsRadius. SimpleCircle:: SimpleCircle(int radius): itsRadius(radius) { } 4. Перегрузите операторы преинкремента и постинкремента для использования в ва- шем классе SimpleCircle с переменной itsRadius. const SimpleCircle& SimpleCircle:: operator++() { ++(itsRadius); return *this; } // постфиксный оператор Operator ++(int). // Выборка, затем инкрементирование const SimpleCircle SimpleCircle:: operator++ (int) // обьявляем локальный обьект класса SimpleCircle и инициализируем его значением * this SimpleCircle temp(*this); ++(itsRadius); return temp; } 5. Измените SimpleCircle таким образом, чтобы сохранять itsRadius в динамической области памяти и фиксировать существующие методы. class SimpleCircle { public: SimpleCircle(); SimpleCircle(int); ~SimpleCircle(); void SetRadius(int); int GetRadius(); const SimpleCircle& operator++(); const SimpleCircle operator++(int); private: int *itsRadius; }; SimpleCircle:: SimpleCircle() {itsRadius = new int(5); } SimpleCircle:: SimpleCircle(int radius) {itsRadius = new int(radius); } SimpleCircle:: ~SimpleCircle() { delete itsRadius; } const SimpleCircle& SimpleCircle:: operator++() { ++(*itsRadius); return < < this; } // Постфиксный оператор Operator++(int). // Выборка, затем инкрементирование const SimpleCircle SimpleCircle:: operator++ (int) { // объявляем локальный объект класса SimpleCircle и инициализируем его значением *this SimpleCircle temp(< < this); ++(*itsRadius); return temp; } 6. Создайте в классе SimpleCircle конструктор-копировщик. SimpleCircle:: SimpleCircle(const SimpleCircle & rhs) { int val = rhs.GetRadius(); itsRadius = new int(val); } 7. Перегрузите в классе SimpleCircle оператор присваивания. SimpleCircle& SimpleCircle:: operator=(const SimpleCircle & rhs) { if (this == & rhs) return *tnis; delete itsRadius; itsRadius = new int; *itsRadius = rhs.GetRadius(); return *this; } 8. Напишите программу, которая создает два объекта класса SimpleCircle. Для создания одного объекта используйте конструктор, заданный по умолчанию, а второму экземпляру при объявлении присвойте значение 9. С каждым из объектов используйте оператор инкремента и выведите полученные значения на печать. Наконец, присвойте значение одного объекта другому объекту и выведите результат на печать. #include < iostream.h> class SimpleCircle { public: // конструкторы SimpleCircle(); SimpleCircle(int); SimpleCircle(const SimpleCircle &); ~SimpleCircle() {} // методы доступа к данным void SetRadius(int); int GetRadius() const; // операторы const SimpleCircle& operator++(); const SimpleCircle operator++(int); SimpleCircle& operator=(const SimpleCircle &): private: int *itsRadius; }; SimpleCircle:: SimpleCircle() {itsRadius = new int(5); } SimpleCircle:: SimpleCircle(int radius) {itsRadius = new int(radius); } SimpleCircle:: SimpleCircle(const SimpleCircle & rh$) { int val = rhs.GetRadius(); itsRadius = new int(val); } SimpleCircle:: ~SimpleCircle() { delete itsRadius; } SimpleCircleS SimpleCircle: operator=(const SimpleCircle & rhs) { if (this == & rhs) return < < this; *itsRadius = rhs.GetRadius(); return *this; } const SimpleCircle& SimpleCircle:: operator++() { ++(*itsRadius); return *this; } // Постфиксный оператор Operator ++(int). // Выборка, затем инкрементирование const SimpleCircle SimpleCircle:: operator++ (int) { // объявляем локальный объект класса SimpleCircle и инициализируем его значением *this SimpleCircle ternp(*this); ++(*itsRadius); return temp; } int SimpleCircle:: GetRadius() const { return ~itsRadius; } int main() { SimpleCircle CircleOne, CircleTwo(9); CircleOne++; ++CircleTwo; cout < < " CircleOne: " < < CircleOne.GetRadius() < < endl; cout < < " CircleTwo: " < < CircleTwo.GetRadius() < < endl; CircleOne = CircleTwo; cout < < " CircleOne: " < < CircleOne.GetRadius() < < endl: cout < < " CircleTwo: " < < CircleTwo.GetRadius() < < endl; return 0; } 9. Жучки: что неправильно в следующем примере использования оператора присваивания? SQUARE SQUARE:: operator=(const SQUARE & rhs) { itsSide - new int; *itsSide = rhs.GetSide(); return *this; } Нужно выполнить проверку на равенство объектов rhs и this, в противном случае обращение к оператору а = а приведет к аварийному отказу вашей программы. 10. Жучки: что неправильно в следующем примере использования оператора суммирования? VeryShort VeryShort:: operator+ (const VeryShort& rhs) { itsVai += rhs.GetltsVal(); return *this; } Этот оператор operator+ изменяет значение в одном из операндов, а не создает с помощью суммирования новый объект VeryShort. Правильно написать следующее: VeryShort VeryShort:: operator+ (const VeryShort& rhs) { return VeryShort(itsVal + rhs.GetltsVal()); }
|