c++ - 通过引用返回 `std::shared_ptr`
问题描述
我正在阅读一些代码库,但我不太明白为什么下面的函数会将reference
(&)返回到std::shared_ptr
. 我在这个 stackoverflow 问题中读到我们应该std::shared_ptr
按值返回,否则我们将无法正确增加引用计数。
所以我只是想猜测原因。
- 它与成员函数有关
static
吗?或者返回值是static
? thread
顾名思义,它与它有关吗?任何人都可以指点我阅读或给出一些方向吗?
class A {
public:
A() {...}
~A() {...}
...
static std::shared_ptr<A>& ThreadLocal() {
static std::shared_ptr<A> inst = std::make_shared<A>();
if (inst == nullptr) {
inst = std::make_shared<A>();
}
return inst;
}
static void Shutdown() {
ThreadLocal().reset();
}
private:
...
}
解决方案
它通过引用返回的原因之一是重置静态共享指针。您可以看到有一些逻辑可以为静态指针可能需要重置的任何业务逻辑创建一个新逻辑。
不,这里没有线程逻辑。
推荐阅读
- uwp - 使用 Blazor Web/Api 和 AAD B2C 的 UWP 商店应用程序
- python - 单词未出现在列表中
- vue.js - 常规 NPM 包在 Vue.js 应用程序中不起作用
- reactjs - TypeError:无法读取 Track 组件未定义的属性“地图”
- c++ - 使用模板类时找不到符号错误
- javascript - 如何处理多行输入?
- c++ - Check at compile-time if an uninstantiated class template inherits from its first template parameter
- python - 如何按顺序显示单词猜测器的猜测字母?Python
- python - 使用 anaconda 安装请求库
- android - 我的应用启动时收到了很多 zygote64 日志。这是什么意思?