This commit is contained in:
Alexander Zhirov 2023-02-28 19:14:38 +03:00
parent 8b668e1d4f
commit ccd1022221
1 changed files with 2 additions and 2 deletions

View File

@ -7,7 +7,7 @@
- [10.5. Инварианты](#10-5-инварианты)
- [10.6. Пропуск проверок контрактов. Итоговые сборки](#10-6-пропуск-проверок-контрактов-итоговые-сборки)
- [10.6.1. enforce это не (совсем) assert](#10-6-1-enforce-это-не-совсем-assert)
- [10.6.2. assert(false) останов программы](#10-6-2-assertfalse-останов-программы)
- [10.6.2. assert(false) останов программы](#10-6-2-assert-false-останов-программы)
- [10.7. Контракты не для очистки входных данных](#10-7-контракты-не-для-очистки-входных-данных)
- [10.8. Наследование](#10-8-наследование)
- [10.8.1. Наследование и предусловия](#10-8-1-наследование-и-предусловия)
@ -519,7 +519,7 @@ string fun()
Вызов `enforce(false)` всегда порождает исключение, но компилятор не знает об этом. Инструкция `assert(false);` дает компилятору понять, что эта точка недостижима. Завершить выполнение `fun` можно и с помощью инструкции `return "";`, но если позже кто-нибудь закомментирует вызов `enforce`, `fun` начнет возвращать фиктивные значения. Выражение `assert(false)` настоящий *deus ex machina*, избавляющий ваш код от таких ситуаций.
[В начало ⮍](#10-6-2-assertfalse-останов-программы) [Наверх ⮍](#10-контрактное-программирование)
[В начало ⮍](#10-6-2-assert-false-останов-программы) [Наверх ⮍](#10-контрактное-программирование)
## 10.7. Контракты не для очистки входных данных