我试图了解 ashared_ptr p在构造未命名时的用法shared_ptr以及它对 的影响p。我正在研究自己的示例并编写了以下代码:
shared_ptr<int> p(new int(42));
cout << p.use_count() << '\n';
{
cout << p.use_count() << '\n';
shared_ptr<int>(p);
cout << p.use_count() << '\n';
}
cout << p.use_count() << '\n';
Output:
1
1
0
1
Run Code Online (Sandbox Code Playgroud)
p第 5 行用于创建临时变量是否正确。shared_ptr(即未命名的shared_ptr)?use_count增加。在我们退出第 7 行的块之前,temp.object 是否已被销毁。p块内的使用计数变为零,为什么退出块后它又变成1了?shared_ptr q如果我在第 5 行使用命名,即:
shared_ptr<int>q(p);
Run Code Online (Sandbox Code Playgroud)
一切都会按预期工作,在第 5 行之后的块内,使用计数将为 2,在我们退出该块后,它将再次为 1。