【发布时间】:2017-06-16 18:01:31
【问题描述】:
使用std::shared_ptr 表示共享所有权和可选性(可能为空)。
我发现自己只想在我的代码中表达共享所有权,而没有可选性。当使用shared_ptr 作为函数参数时,我必须让函数检查它是否不为空以保持一致/安全。
在许多情况下,传递参考而不是当然是一种选择,但我有时也想转移所有权,因为shared_ptr 是可能的。
是否有一个类可以替换 shared_ptr 而不可能为空,有一些约定来处理这个问题,或者我的问题没有多大意义?
【问题讨论】:
-
传递一个 (const) 引用。
-
^ 按值传递
shared_ptr的用例并不多。 -
你真的想解决什么问题?如果你觉得你的
shared_ptr永远不会为空,那么只需记录并断言这个假设并继续前进。你确实会测试你的代码,对吧? -
我当然可以记录和断言。我说的是表现力和使用类型系统来防止编译时出现一种错误。此外,它会将每个函数所需的测试用例数量减少一个,即通过 nullptr 的情况。 ;-)
标签: c++ smart-pointers null-pointer invariants preconditions