shared_ptr怎么改值
时间: 2023-08-09 18:07:30 浏览: 92
shared_ptr是一种智能指针,用于管理动态分配的内存资源。它可以通过重载赋值运算符来改变其指向的值。要改变shared_ptr的值,可以使用reset()函数或直接赋值给它。例如,假设有一个shared_ptr指向一个int类型的对象,可以通过以下方式改变其值:
shared_ptr<int> ptr(new int(10)); // 创建一个指向int类型对象的shared_ptr
*ptr = 20; // 直接修改指向对象的值
ptr.reset(new int(30)); // 使用reset()函数改变指向的对象
在上述代码中,首先创建了一个指向int类型对象的shared_ptr,然后通过解引用操作符*修改了指向对象的值为20。接下来,使用reset()函数将shared_ptr重新指向一个新的int类型对象,其值为30。
需要注意的是,shared_ptr是通过引用计数来管理资源的,当最后一个指向资源的shared_ptr被销毁时,资源会被释放。因此,在改变shared_ptr的值时,需要注意是否会导致资源的提前释放或内存泄漏的问题。
#### 引用[.reference_title]
- *1* *2* [C++中的四个智能指针:shared_ptr,unique_ptr,weak_ptr,auto_ptr](https://blog.csdn.net/weixin_61360713/article/details/127819777)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [C++智能指针auto_ptr、unique_ptr、shared_ptr、weak_prt详解](https://blog.csdn.net/GodFishhh/article/details/128823392)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]