CppCoreGuidelines R.36 用 const shared_ptr& 参数表明函数会保留对象的引用计数
03 March 2023
“Take a const shared_ptr<widget>&
parameter to express that it might retain a reference count to the object”
理由
显式的表达函数保持引用计数的机制
好例子
void share(shared_ptr<widget>); // share -- "will" retain refcount void reseat(shared_ptr<widget>&); // "might" reseat ptr void may_share(const shared_ptr<widget>&); // "might" retain refcount
强化
- 警告:如果一个函数接收
shared_ptr<T>
的左值引用参数,但是在所有代码执行路径上既不赋值,也不调用reset()
。考虑使用T*
或T&
- 警告:如果一个函数接收
unique_ptr<T>
值或常值引用,但是在所有代码路径上,不复制或移动到另一个共享指针,考虑使用T*
或T&
- 警告:如果一个函数接收
shared_ptr<T>
右值引用,考虑使用值传递。