智能指针应该/可以在函数中通过引用传递吗?
即:
void foo(const std::weak_ptr<bar>& x)
最佳答案
当然你可以通过const&
传递智能指针。
这样做也是有原因的:
如果接受所述智能指针的函数只是接受原始(观察)指针以操作(潜在)指针对象的前面。
除了转让/共享所有权之外,切勿强制任何人使用智能指针进行任何操作,他们可能不会使用您坚持要求的人来管理它。
在所有其他情况下,使用智能指针意味着所有权的转移/共享,并避免廉价的拷贝(只是测试它是否拥有任何东西和引用计数,以及两个指针拷贝)实际上并没有给你买任何东西。
关于c++ - 智能指针应该/可以通过函数中的引用传递吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562339/