小编Soh*_*hof的帖子

了解与临时对象一起使用时的 C++ std::shared_ptr

我试图了解 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)
  1. p第 5 行用于创建临时变量是否正确。shared_ptr(即未命名的shared_ptr)?
  2. 如果是的话为什么不use_count增加。在我们退出第 7 行的块之前,temp.object 是否已被销毁。
  3. 如果它被破坏了,p块内的使用计数变为零,为什么退出块后它又变成1了?

shared_ptr q如果我在第 5 行使用命名,即:

shared_ptr<int>q(p);
Run Code Online (Sandbox Code Playgroud)

一切都会按预期工作,在第 5 行之后的块内,使用计数将为 2,在我们退出该块后,它将再次为 1。

c++ syntax expression declaration shared-ptr

4
推荐指数
1
解决办法
1234
查看次数

标签 统计

c++ ×1

declaration ×1

expression ×1

shared-ptr ×1

syntax ×1