c++ - 智能指针应该/可以通过函数中的引用传递吗

标签 c++ c++11 smart-pointers

智能指针应该/可以在函数中通过引用传递吗?

即:

void foo(const std::weak_ptr<bar>& x)

最佳答案

当然你可以通过const&传递智能指针。

这样做也是有原因的:
如果接受所述智能指针的函数只是接受原始(观察)指针以操作(潜在)指针对象的前面。
除了转让/共享所有权之外,切勿强制任何人使用智能指针进行任何操作,他们可能不会使用您坚持要求的人来管理它。

在所有其他情况下,使用智能指针意味着所有权的转移/共享,并避免廉价的拷贝(只是测试它是否拥有任何东西和引用计数,以及两个指针拷贝)实际上并没有给你买任何东西。

关于c++ - 智能指针应该/可以通过函数中的引用传递吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34562339/

相关文章:

java - 在 JNI 创建的 dll 中使用 dll 的问题

c++ - 我正在尝试对运算符 '+'进行二进制重载,但输出错误,我不明白为什么?

c++ - 垂直布局 QTableView 的范例方式

c++ - 我们可以确定指向的数据是否是手动分配的吗?

c++ - 在分配 scoped_ptr 之前处理异常

c++ - shared_pointer 意外行为

c++ - 在 C++ 中与复制构造函数作斗争

c++ - virtual ~T(){} 和 virtual ~T() = default 之间的区别;

c++ - 如何将智能指针与 Allegro 位图一起使用?

c++ - 获取刚插入容器的对象的迭代器或引用