Я читаю некоторую кодовую базу, но я не совсем понимаю, почему приведенная ниже функция возвращает reference
(&) в std::shared_ptr
. Я прочитал в этот вопрос о стеке , что мы должны вернуть 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:
...
}