boost::scoped_ptr<T>
和std::unique_ptr<T>
之间的唯一区别是std::unique_ptr<T>
有移动语义,而boost::scoped_ptr<T>
只是一个get/reset智能指针吗?
发布于 2011-11-20 14:13:18
不,但这是最重要的区别。
另一个主要区别是,与shared_ptr
类似,unique_ptr
可以有一个析构函数对象。与shared_ptr
不同,析构函数类型是unique_ptr
类型的一部分(就像分配器是STL容器类型的一部分一样)。
const unique_ptr
可以有效地完成scoped_ptr
可以完成的大部分工作;实际上,与scoped_ptr
不同的是,const unique_ptr
不能通过reset
调用进行反弹。
此外,unique_ptr<T>
可以在不完整类型的T
上工作。当您对unique_ptr
执行任何可能调用该删除器的操作时,默认的删除器类型要求T
是完整的。因此,根据情况,您可以自由地玩游戏,了解发生这种情况的地点。
https://stackoverflow.com/questions/8199812
复制相似问题