LINUX.ORG.RU

История изменений

Исправление Begemoth, (текущая версия) :

В точности наоборот, смарт-поинтер это не только автоматическое управления памятью, это документация, указывающая на семантику владения. Фактически, способ писать код безопасный по отношению к исключениям - это использовать RAII повсеместно (лапшу из try-catch трудно назвать альтернативой). Причем это не зависит от языка, это могут быть объекты, управляющие ресурсами, в C++, try-with-resources в Java, using в C#, use в F#.

Исправление Begemoth, :

В точности наоборот, смарт-поинтер это не только автоматическое управления памятью, это документация, указывающая на семантику владения. Фактически, способ писать код безопасный по отношению к исключениям - это использовать RAII повсеместно (лапшу из try-catch трудно назвать альтернативой). Причем это не зависит от языка, это могут быть объекты, управляющие ресурсами, в C++, try-with-resources в Java, using в C#, use в F#, unwind-protect в Common Lisp и dynamic-wind в Scheme (плюс семейство функций подобных call-with-input-file).

Исходная версия Begemoth, :

В точности наоборот, смарт-поинтер это не только автоматическое управления памятью, это документация, указывающая на семантику владения. Фактически, способ писать код безопасный по отношению к исключениям - это использовать RAII повсеместно (лапшу из try-catch трудно назвать альтернативой). Причем это не зависит от языка, это могут быть объекты, управляющие ресурсами, в C++, try-with-resources в Java, unwind-protect в Common Lisp и dynamic-wind в Scheme (плюс семейство функций подобных call-with-input-file).