在C ++中使用unique_ptr函数参数的原始指针的目的是什么?

时间:2017-10-28 18:51:36

标签: c++ c++11 smart-pointers unique-ptr

浏览TensorFlow C ++ API我偶然发现了一个奇怪的函数签名:

Status Create(
     const FileSystemStoragePathSourceConfig & config,
     std::unique_ptr< FileSystemStoragePathSource > *result
)

我不明白为什么result是指向unique_ptr的原始指针。因为通常当我们想要将unique_ptr作为函数参数传递时,我们可以通过移动(&&)或引用&或值来实现。我之前没有看到过指向unique_ptr的原始指针的用例。

1 个答案:

答案 0 :(得分:4)

TensorFlow由Google制作。 Google's C++ style guide说:

  

所有通过引用传递的参数都必须标记为const

这意味着所有输出参数必须是指针,而不是引用。这种风格不是惯用的C ++(标准库通过引用传递输出参数),但谷歌风格指南的支持者认为将输出参数作为指针传递使得更清楚哪些参数是输入的,哪些是输出。