有没有办法阻止用户使用
显式获取唯一指针的所有权 std::move
答案 0 :(得分:8)
将其设为const
unique_ptr
移动构造函数采用非const 右值引用,因此无法使用const
对象调用。
const unique_ptr<int> owner(new int);
// ...
unique_ptr<int> thief = std::move(owner); // ERROR
这允许unique_ptr
像boost::scoped_ptr
答案 1 :(得分:5)
通过返回std::unique_ptr
,您已放弃对象的控制权。新主人要么将其销毁,要么将其传递给其他人。
如果您不打算让用户释放该对象,则返回一个引用。
你有boost::scoped_ptr
/ const std::unique_ptr
(参见Jonathan的回答),它在技术上回答了你的问题 - 来电者发布,但无法泄露资源 - 但我看不出引人注目例如为什么你需要这个而不是std::unique_ptr
或参考