Разница между boost :: scoped_ptr <T>и std :: unique_ptr <T> - PullRequest
53 голосов
/ 20 ноября 2011

Единственная разница между boost::scoped_ptr<T> и std::unique_ptr<T> в том, что std::unique_ptr<T> имеет семантику перемещения, тогда как boost::scoped_ptr<T> - это просто умный указатель get / reset?

Ответы [ 2 ]

42 голосов
/ 20 ноября 2011

Нет, но это самое важное отличие.

Другое важное отличие состоит в том, что unique_ptr может иметь объект-деструктор, подобно тому, как shared_ptr.В отличие от shared_ptr, тип деструктора является частью типа unique_ptr (способ, которым распределители являются частью типов контейнеров STL).

28 голосов
/ 20 ноября 2011

unique_ptr владеет исключительно объектом. Это не подлежит копированию , но поддерживает передача права собственности . Это было введено как замена для теперь устаревшего auto_ptr.

scoped_ptr не является ни копируемым, ни подвижным . Это предпочтительный вариант, когда необходимо убедиться, что указатели удаляются при выходе из области видимости.

...