Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Ссылки нельзя переназначать
Даже опытных программистов, которые хорошо знают правило о том, что ссылки нельзя переназначать и что они всегда являются псевдонимами для своих адресатов, может ввести в заблуждение происходящее при попытке переназначить ссылку. То, что кажется переназначением, оказывается присвоением нового значения адресату. Этот факт иллюстрируется в листинге 9.3. Листинг 9.3. Присвоение значения ссылке 1: // Листинг 9.3 2: // Присвоение значения ссылке 3: 4: #include < iostream.h> 5: 6: int main() 7: { 8: int intOne; 9: int & rSomeRef = intOne; 10: 11: intOne: 5 12: cout < < " intOne: \t" < < intOne < < endl; 13: cout < < " rSomeRef: \t" < < rSomeRef < < endl; 14: cout < < " & intOne: \t" < < & intOne < < endl; 15: cout < < " & rSomeRef: \t" < < & rSomeRef < < endl; 16: 17: int intTwo = 8; 18: rSomeRef = intTwo; // не то что вы думаете 19: cout < < " \nintOne: \t" < < intOne < < endl; 20: cout < < " intTwo: \t" < < intTwo < < endl; 21: cout < < " rSomeRef: \t" < < rSomeRef < < endl; 22: cout < < " & intOne: \t" < < & intOne < < endl; 23: cout < < " & intTwo: \t" < < & intTwo < < endl; 24: cout < < " & rSomeRef: \t" < < & rSomeRef < < endl; 25: return 0; 26: }
Результат: intOne: 5 rSomeRef: 5 & intOne: 0x213e & rSomeRef: 0x213e intOne: 8 int: Two: 8 rSomeRef: 8 & intOne: 0x213e & intTwo: 0x2130 & rSomeRef: 0x213e
Анализ: Вновь в строках 8 и 9 объявляются целочисленная переменная и ссылка на целое значение. В строке 11 целочисленной переменной присваивается значение 5, а в строках 12-15 выводятся значения переменной и ссылки, а также их адреса. В строке 17 создается новая переменная intTwo, которая тут же инициализируется значением 8. В строке 18 программист пытается переназначить ссылку rSomeRef так, чтобы она стала псевдонимом переменной intTwo, но этого не происходит. На самом же деле ссылка rSomeRef продолжает действовать как псевдоним переменной intOne, поэтому такое присвоение эквивалентно следующей операции: intOne = intTwo; Это кажется достаточно убедительным, особенно при выводе на экран значений переменной intOne и ссылки rSomeRef (строки 19— 21): их значения совпадают со значением переменной intTwo. На самом деле при выводе на экран адресов в строках 22—24 вы видите, что ссылка rSomeRef продолжает ссылаться на переменную intOne, а не на переменную intTwo.
Не рекомендуется: Не пытайтесь переназначить ссылку. Не путайте оператор адреса с оператором ссылки. Рекомендуется: Используйте ссылки для создания псевдонимов объектов. Инициализируйте ссылки при объявлении.
|