小编Thi*_*ium的帖子

交换2个shared_ptr的内容

交换两个s的内容时shared_ptr,只交换内容。当在shared_ptr交换之前从另一个副本创建一个副本时,我很惊讶新shared_ptr副本的内容保持不变。

这是一个例子:

std::shared_ptr<int> foo (new int(10));
std::shared_ptr<int> bar (new int(20));

auto abc = foo;
std::swap (foo, bar);
std::cout << "foo: " << *foo << '\n';
std::cout << "bar: " << *bar << '\n';
std::cout << "abc: " << *abc << '\n';
Run Code Online (Sandbox Code Playgroud)

它打印:

foo: 20
bar: 10
abc: 10
Run Code Online (Sandbox Code Playgroud)

abc在这种情况下为什么不是20?鉴于它是 的副本foo

c++ shared-ptr

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

标签 统计

c++ ×1

shared-ptr ×1