为什么重置返回无效

Why does reset return void?

本文关键字:无效 返回 为什么      更新时间:2023-10-16

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。