CppCoreGuidelines R.33 用 unique_ptr& 参数表示函数会重座该 widget
28 February 2023
“Take a uniqueptr<widget>& parameter to express that a function reseats the widget”
理由
通过这种方式使用 unique_ptr
说明并强化函数调用的重座语义。
注意
重座(Reseat)意思是让一个指针或智能指针指向一个不同的对象。
例子
void reseat(unique_ptr<widget>&); // "will" or "might" reseat pointer
坏例子
void thinko(const unique_ptr<widget>&); // usually not what you want
强化
- 警告:如果一个函数接收
unique_ptr<T>
的左值引用参数,但是在所有代码执行路径上既不赋值,也不调用reset()
。考虑使用T*
或T&
- 警告:一个函数接收
unique_ptr<T>
常值引用,考虑使用const T*
或const T&