boost :: scoped_ptr <t>和std :: unique_ptr <t> </t> </t>之间的区别

时间:2011-11-20 06:07:49

标签: c++ unique-ptr scoped-ptr

boost::scoped_ptr<T>std::unique_ptr<T>之间的唯一区别是std::unique_ptr<T>移动语义而boost::scoped_ptr<T>只是获取/重置智能指针这一事实?

2 个答案:

答案 0 :(得分:42)

不,但这是最重要的区别。

另一个主要区别是unique_ptr可以有一个析构函数对象,与shared_ptr的方式类似。与shared_ptr不同,析构函数类型是unique_ptr类型的一部分(分配器是STL容器类型的一部分)。

答案 1 :(得分:28)

unique_ptr仅拥有一个对象。不可复制,但支持所有权转移。它是作为现已弃用的auto_ptr

的替代品而引入的

scoped_ptr 既不可复制也不可移动。当你想要确保指针在超出范围时被删除时,它是首选。