Re[2]: Отсутствие деструкторов!? Как же дальше жить?
От: Андрей Швыдкый Украина  
Дата: 10.02.02 15:19
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте Андрей Швыдкый, Вы писали:


АШ>>Привет всем.


АШ>>С удивлением обнаружил, что хоть Microsoft и постарались — ввели конструкторы даже в те языки, что их не поддерживали, они убрали деструкторы. Предлагаемая взамен комбинация Finalize/Dispose не гарантирует того, что гарантировал автоматический деструктор C++. Все хорошо, если освобождаемые ресурсы в памяти, то есть подвласны сборщику мусора. Но бывают ситуации когда это не так:

АШ>>Есть класс, представляющий из себя нечто вроде моникера для файлов лежащих далеко в "медленной" сети. При первой загрузке файла, он закачивает его и сохраняет локально в кеш. В деструкторе локальная копия убивается. А где его убивать сейчас?

АШ>>Андрей


А>А почему бы не сделать метод close() и вызывать его вместо деструктора ?


Это решение "в лоб". (Кстати вышеупомятутый Dispose так и предлагают использовать). Кто гарантирует что я смогу вызвать этот Close? В случае исключительных ситуаций выполнение кода может быть не совсем детерминировано. Это ж что ж возвращаемся в прошлый век?
"Контролируй друже то шо пышеш, бо реализовать аналог smart pointer-а теперь низя"

Андрей
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.