gpt4 book ai didi

c++ - shared_ptr 和 use_count

转载 作者:太空狗 更新时间:2023-10-29 23:30:55 25 4
gpt4 key购买 nike

在下面的代码片段中:

shared_ptr<int> p;

{
p = shared_ptr<int>(new int);
cout<<p.use_count()<<endl;
}

cout<<p.use_count()<<endl;

输出结果为

11

我不明白为什么第一个输出是1——它不应该是2吗?

最佳答案

临时对象的生命周期不足以让第一个 p.use_count() 返回 2。临时对象首先被销毁,放弃其拥有的任何东西的所有权。

此外,由于临时变量是一个右值,因此对 p 的赋值将导致移动赋值,这意味着无论如何使用计数永远不会是 2(假设实现质量)。所有权只是从临时转移到 p,永远不会超过 1。

关于c++ - shared_ptr 和 use_count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11920659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com