超越boost的最佳选择:scoped_ptr <t> pimpl </t>

时间:2014-12-05 00:46:58

标签: c++ c++11 boost c++14

我不是仅使用标准库提升我在一些问题中看到boost::scoped_ptr<T>std::unique_ptr之间的主要区别在于boost::scoped_ptr<T>既不可复制也不可移动,然后我想知道,boost::scoped_ptr<T>的最佳选择是什么?使用std::unique_ptr或使用规则为三/五的原始指针以避免复制和移动?

2 个答案:

答案 0 :(得分:5)

我建议使用const std::unique_ptr

您几乎不想直接管理原始指针,因此unique_ptr是唯一明智的选择(shared_ptr不适合pimpl,很少您想共享impl对象)。添加const会使其无法移动,例如scoped_ptr

答案 1 :(得分:1)

这个问题有点含糊不清,但答案是肯定的,你应该使用std :: unique_ptr或std :: shared_ptr来保存你的pimpl,这取决于你是否希望你的类共享状态(shared_ptr)或者具有可自动移动的独占访问权限(unique_ptr)。

管理裸指针非常难以正确,如果你在同一个班级管理不止一个,就不可能。 unique_ptr的创建是为了帮助您轻松编写完美的程序。

使用它是明智的。