Теперь, когда shared_ptr
находится в tr1, что, по вашему мнению, должно произойти при использовании std::auto_ptr
? Они оба имеют разные варианты использования, но все варианты использования auto_ptr
могут быть решены с помощью shared_ptr
. Вы откажетесь от auto_ptr
или продолжите использовать его в тех случаях, когда вы хотите явно выразить, что только один класс имеет право владения в любой точке?Идиоматическое использование std :: auto_ptr или использование shared_ptr?
Я считаю, что использование auto_ptr
может добавить ясность в код, точно добавив нюанс и указание на дизайн кода, но с другой стороны, это добавляет еще одну тонкую проблему при обучении новых программистов: им нужно понимать умные указатели и тонкие детали того, как они работают. Когда вы используете только один умный указатель повсюду, вы можете просто установить правило «обернуть все указатели в shared_ptr
» и сделать с ним.
Как вы относитесь к этому?
scoped_ptr имеет свое применение, а именно однократное владение, которое не требует передачи. В таких случаях он должен заменить auto_ptr. Тем не менее, если односторонняя собственность, семантика передачи подходит, auto_ptr все равно должен использоваться. :-) – 2008-10-13 09:33:59
Что делает scoped_ptr лучше, чем const auto_ptr? В Исключительном C++ есть пункт об auto_ptr, особенно о const auto_ptr; от чтения о scoped_ptr Я не вижу никаких преимуществ перед const auto_ptr. – Roel 2008-10-13 12:16:52
`auto_ptr` может дать право собственности. Часто это не требуется. В принципе, `scoped_ptr` реализует только RAII для произвольного указателя в данном блоке. – 2008-10-13 13:37:09