如何删除shared_ptr内容并将其替换为新对象
How to delete shared_ptr content and replace it with new object?
我想知道是否有办法删除shared_ptr持有的对象并创建一个新对象,以便该shared_ptr的所有其他副本仍然有效并指向此对象?
您只需重新分配或重置它。
例:
#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++ 如何在将新对象分配给另一个对象时创建新对象
- 重用对象与创建新对象
- C++,创建新对象时类的对象更改
- 运算符重载 += 添加新对象
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 从使用概念定义的函数返回新对象
- 从 Rcpp 函数返回指向"新"对象的指针的正确方法
- c++ 替换调用对象方法的宏函数
- 如何删除派生类中基类对象的新对象
- 有没有一种方法可以从函数中返回一个新对象或对现有对象的引用
- 为模板参数类型中的新对象分配内存
- 删除通过取消引用新对象初始化的对象
- C++ 实例化新对象时不接受继承方法默认参数值
- 替换派生对象向量中的对象"no matching function to call"
- 有没有办法删除传递给函数"foo(新对象())"的对象?
- 调用Main将替换矢量对象并覆盖数据
- 将 Eigen::MatrixXd 转换为 arma::mat 并在新对象上制作副本
- 如何删除shared_ptr内容并将其替换为新对象
- 当我使用DC时,我应该总是在默认对象完成工作后用新对象替换它吗