为什么weak.lock()
在这段代码中最简短地返回nullptr
:
std::weak_ptr<int> weakPtr1 = std::make_shared<int>(6);
std::cout << weakPtr1.lock() << std::endl;
而它在下一个中起作用:
std::shared_ptr<int> sharedPtr = std::make_shared<int>(99);
std::weak_ptr<int> weakPtr2 = sharedPtr;
std::cout << weakPtr2.lock() << std::endl;
检查cpp.sh/9gkys。
我已经考虑过,但是现在我还是很困惑。谢谢您对此问题的帮助。
您的示例使用副本初始化。因此,在右侧构造的shared_ptr
仅在对表达式求值之前有效,然后销毁: