将指向 shared_ptr 的指针传递给函数的原因是什么?

What are the reasons for passing a pointers to a shared_ptr to a function?

我正在查看 Apache 的 Arrow 库的 C++ API,并注意到它到处都是采用 std::shared_ptr<T>* 类型参数的成员函数。对我来说,这看起来是不必要的做作而且可能很脆弱,坦率地说,图书馆会规定我如何选择解决其 类 实例的所有权,这对我来说很奇怪。因此我的结论是,这种方法一定有一些我不知道的优点,这激发了我的好奇心。

以智能指针为参数的函数有什么优点?

Herb Sutter 在他关于 Smart Pointer Parameters 的文章中没有提到这个选项。

std::shared_ptr<…>* 在 Arrow 中使用,当函数将对象作为 shared_ptr 返回时,同时该函数可能会因 arrow::Status 代码之一而失败。

Apache Arrow C++ 遵循 Google C++ 风格指南。其中一个方面是 not use exceptions. Furthermore, normally output will be done with a normal return statement but in the cases where we also need to return a Status, we use the alternative approach of returning it via a non-const pointer.

对于 Arrow 不拥有传递参数所有权的输入,而不是 std::shared_ptr<T>,函数采用 const T&。如果之后共享所有权或参数是输出参数

,则共享指针仅出现在函数签名中