CppCoreGuidelines R.32 用 unique_ptr 参数标明函数接收指针的所有权
27 February 2023
“Take a unique_ptr<widget>
parameter to express that a function assumes ownership of a widget”
理由
使用 unique_ptr
说明并强化函数调用接收所有权转移。
例子
void sink(unique_ptr<widget>); // takes ownership of the widget void uses(widget*); // just uses the widget
坏例子
void thinko(const unique_ptr<widget>&); // usually not what you want
强化
- 警告:如果一个函数接收左值引用的
unique_ptr<T>
参数,却在任何代码路径中不给它赋值,或调用reset()
。考虑使用 T* 或 T& - 警告:如果一个函数接收
unique_ptr<T>
的常值引用,考虑使用const T*
或const T&