为什么重置返回无效



shared_ptr, auto_ptr, unique_ptr, boost::scoped_ptr的所有reset函数真的可以返回对对象本身的引用时,它们都会返回void,因为如果我将智能指针重置为某个对象,我很可能会使用它。(也许是个可疑的例子。)

也就是说,不能重置定义为

unique_ptr& reset( pointer ptr = pointer() );

而不是

void reset( pointer ptr = pointer() );

注意:本质上reset,它实际上是一个"赋值",应该在末尾返回*this*,就像operator=已经返回一样。(这不是要返回旧值或类似的东西。)

Boost库要经过一个评审过程。API是这样的,因为它的审查。您可以选择编写适配器类模板或自己的共享指针类模板。由于boost代码通常很重,后一种选择可能不是一个坏主意。然后您将完全控制API。

相关内容

  • 没有找到相关文章

最新更新