Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Листинг 8.10. Указатели на константные объекты
1: // Листинг 8.10. 2: // Вызов константных методов с помощью указателей 3: 4: flinclude < iostream.h> 5: 6: class Rectangle 7: { 8: public: 9: Rectangle(); 10: ~Rectangle(); 11: void SetLength(int length) { itsLength = length; } 12: int GetLength() const { return itsLength; } 13: void SetWidth(int width) { itsWidth = width: } 14: int GetWidth() const { return itsWidth; } 15: 16: private: 17: int itsLength; 18: int itsWidth; 19: }; 20: 21: Rectangle:: Rectangle() 22: { 23: itsWidth = 5; 24: itsLength = 10; 25: } 26: 27: Rectangle:: ~Rectangle() 28: { } 29: 30: int main() 31: { 32: Rectangle* pRect = new Rectangle; 33: const Rectangle * pConstRect = new Rectangle; 34: Rectangle * const pConstPtr = new Rectangle; 35: 36: cout < < " pRect width; " < < pRect-> GetWidth() < < " meters\n"; 37: cout < < " pConstRect width: " < < pConstRect-> GetWidth() < < " meters\n"; 38: cout < < " pConstPtr width: " < < pConstPtr-> GetWidth() < < " meters\n"; 39: 40: pRect-> SetWidth(10); 41: // pConstRect-> SetWidth(10); 42: pConstPt r-> SetWidth(10); 43: 44: cout < < " pRect width: " < < pRect-> GetWidth() < < " meters\n"; 45: cout < < " pConstRect width: " < < pConstRect-> GetWidth() < < " meters\n"; 46: cout < < " pConstPtr width: " < < pConstPtr-> GetWidth() < < " meters\n"; 47: return 0; 48: }
Результат: pRect width: 5 meters pConstRect width: 5 meters pConstPtr width: 5 meters pRect width: 10 meters pConstRect width: 5 meters pConstPtr width: 10 meters
Анализ: В строках 6—19 приведено описание класса Rectangle. Обратите внимание, что метод GetWidth(), описанный в строке 14, имеет спецификатор const. Затем в строке 32 объявляется указатель на объект класса Rectangle, а в строке 33 — на константный объект этого же класса. Константный указатель pConstPrt описывается в строке 34. В строках 36—38 значения переменных класса выводятся на экран. Метод SetWidth(), вызванный для указателя pRect (строка 40), устанавливает значение ширины объекта. В строке 41 показан пример использования указателя pConstRect для вызова метода класса. Но, так как pConstRect является указателем на константный объект, вызов методов без спецификатора const для него недоступен, поэтому данная строка закомментирована. В строке 42 происходит вызов метода SetWidth() для указателя pConstPrt. Этот указатель константный и может ссылаться только на одну область памяти, однако сам объект константным не является, поэтому данная операция полностью корректна.
Рекомендуется: Проверяйте значения, возвращаемые функцией malloc(). Защищайте объекты, которые не должны изменяться в программе, с помощью ключевого слова const в случае передачи их как ссылок. Передавайте как ссылки те объекты, которые должны изменяться в программе. Передавайте как значения небольшие объекты, которые не должны изменяться в программе.
|