为什么重置返回无效
Why does reset return void?
当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。
相关文章:
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 枚举进程模块在有效句柄上返回无效句柄
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- FFMPEG:sws_scale返回错误:切片参数 0, 2160 无效
- 自动返回类型匹配无效
- Gmock:返回无效值
- 具有引用返回类型的重写方法上的协变返回类型无效
- cppcheck 抱怨危险地使用 c_str(). c_str() 返回的值在此调用后无效
- cpp 检查抱怨危险使用 c_str(). c_str() 返回的值在本次调用后无效,如何解决?
- 对"无效的抽象返回类型"进行故障排除
- C++ 安全数组在从 c# COM dll 返回时具有无效数据
- 访问冲突投射到无效*并返回
- 将uint64_t转换为无效*并返回
- 返回对象时从'const DList<int>* const'到 'DList<int>*' [-fallowive] 的转换无效
- 从模板函数返回默认构造或无效
- get 函数返回无效值
- 错误:二进制表达式('float' 和 'float')返回的无效操作数 (x & (1 << 31)) == 0
- 发布信号量返回错误 6(无效句柄)
- 获取控制权到达非无效函数警告的末尾,尽管我在 th 函数中有返回语句
- 无效 ** 等同于无效 * 返回