gpt4 book ai didi

c++ - 如何删除 shared_ptr 内容并用新对象替换它?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:55 26 4
gpt4 key购买 nike

我想知道是否有一种方法可以删除 shared_ptr 持有的对象并创建一个新对象,以便该 shared_ptr 的所有其他拷贝仍然有效并指向该对象?

最佳答案

你只需reassignreset

例子:

#include <iostream>
#include <memory>

template<typename T>
std::shared_ptr<T> func(std::shared_ptr<T> m)
{
m = std::make_shared<T>(T{});
//m.reset();
//m.reset(new int(56));
return m;
}

int main(){
std::shared_ptr<int> sp1 = std::make_shared<int>(44);
auto sp2 = func(sp1);
//sp1 is still valid after its copy was altered in func
std::cout << *sp1 << '\n' << *sp2 << std::endl;
}

关于c++ - 如何删除 shared_ptr 内容并用新对象替换它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35258160/

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