Re[3]: Что делать с проблемами в деструкторе?
От: landerhigh Пират  
Дата: 17.11.15 12:01
Оценка: +2
Здравствуйте, jahr, Вы писали:

L>>Деструктор вызывается при разрушении объекта. То есть, что бы не случилось в Вега деструкторе, остается в деструкторе. И вызываемый код doesn't care.

L>>Отсюда и плясать.

J>Как-то это неправильно получается — язык by-design подразумевает наличие каких-то "черных дыр" кода, это ж почти undefined behaviour.)


Нет тут никакой черной дыры. Деструктор вызывается при разрушении объекта. Объект разрушается, когда вызываемый код решает "все, я с тобой закончил, ты мне больше не нужен". Это подразумевает, что все, что вызываемому коду нужно было от объекта, он уже получил.
А объект, в свою очередь, способен гарантированно подтереть за собой в деструкторе.
Это же очевидно.

L>>"Запись в файл" — это не "освобождение ресурса". Это и правда весьма сложное действие, которое может обломаться. В зависимости от стратегии обработки ошбиок, внешней логике на это может быть пофигу, тогда в принципе это можно и в деструкторе делать.

L>>А может и не пофигу, тогда подобному действию не место в деструкторе.

J>Ну, можно найти пример и не так явно сложный, например, — многие winapi-шные функции освобождения ресурсов имеют код возврата,


Это зависит от нескольких вещей. Во-первых, важен ли нам код возврата. Во-вторых, можем ли мы что-то сделать в случае, если код ошибки возвращает ошибку. В-третьих, это скорее зависит от стратегии обработки ошибок в программе.
Все эти вопросы прямого отношения к деструкторам не имеют.
www.blinnov.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.