boost::scoped_ptr<T>
和std::unique_ptr<T>
之间的唯一区别是std::unique_ptr<T>
移动语义而boost::scoped_ptr<T>
只是获取/重置智能指针这一事实?
答案 0 :(得分:42)
不,但这是最重要的区别。
另一个主要区别是unique_ptr
可以有一个析构函数对象,与shared_ptr
的方式类似。与shared_ptr
不同,析构函数类型是unique_ptr
类型的一部分(分配器是STL容器类型的一部分)。
答案 1 :(得分:28)
unique_ptr
仅拥有一个对象。不可复制,但支持所有权转移。它是作为现已弃用的auto_ptr
。
scoped_ptr
既不可复制也不可移动。当你想要确保指针在超出范围时被删除时,它是首选。