应该/可以通过函数中的引用传递智能指针吗?
即:
void foo(const std::weak_ptr<bar>& x)
答案 0 :(得分:2)
当然,您可以通过const&
传递智能指针。
还有理由这样做:
如果接受所述智能指针的函数只是一个接受用于操纵(潜在)指针的原始(观察)指针的函数的前端。
永远不要强迫任何人使用智能指针进行任何操作,只需转移/共享所有权,他们可能无法使用您坚持使用的智能指针进行管理。
在所有其他情况下,使用智能指针意味着转移/共享所有权,并避免廉价的副本(只是测试它是否拥有任何东西和引用计数,以及两个指针副本)实际上没有给你买任何东西。
答案 1 :(得分:0)
不,如果我们谈论的是std
智能指针。 const T &
无法转让/分享所有权,因此原始非拥有T *
总是更好,效率更高。