роблема заключается в том, что

Автор admin Вторник, 5 мая 2009 11:32

роблема заключается в том, что функция пытается одновременно, во-первых, вернуть значение, во-вторых, изменить состояние стека. Лучше разделить эти операции на две разные функции класса, что и делается в стандартном классе stack (другими словами, соблюдается принцип связности — каждая функция решает одну четко сформулированную задачу). Код, безопасный по отношению к исключениям, оставляет объекты в логически целостном состоянии и не приводит к утечке ресурсов. Осторожность также потребуется при написании пользовательских операторов присваивания. В главе 12 первого тома было показано, что оператор = должен работать по следующей схеме: 1. Убедиться в том, что объект не присваивается сам себе. Если это происходит, перейти к шагу 6 (проверка выполняется исключительно с целью оптимизации). 2. Выделить новую память для переменных-указателей. 3. Скопировать данные из старой памяти в новую. 4. Освободить старую память. 5. Обновить состояние объекта, присвоив переменным-указателям новые указатели на блоки, выделенные из кучи. 6. Вернуть *this. 52 Глава 1 • Обработка исключений Важно, чтобы состояние объекта не


Комментарии закрыты.