shared_ptr reset
时间: 2023-08-09 09:08:23 浏览: 168
shared_ptr的reset()函数用于重置智能指针的指向。当调用reset()时,智能指针会释放当前所拥有的资源,并接管新的资源。
具体来说,当调用reset()时,智能指针会执行以下操作:
1. 释放当前所拥有的资源(如果有的话)。
2. 将智能指针的内部指针指向新的资源。
3. 如果提供了新的资源,智能指针会接管该资源的所有权。
示例代码如下:
```
#include <iostream>
#include <memory>
int main() {
std::shared_ptr<int> ptr(new int(5));
std::cout << "ptr: " << *ptr << std::endl; // 输出: ptr: 5
ptr.reset(new int(10));
std::cout << "ptr: " << *ptr << std::endl; // 输出: ptr: 10
return 0;
}
```
在上面的示例中,一开始我们创建了一个shared_ptr,指向值为5的整型对象。然后我们调用reset()函数,将智能指针重新指向一个新的整型对象,其值为10。
相关问题
shared_ptr reset 返回
shared_ptr 的 reset 函数用于将一个 shared_ptr 对象重置为 nullptr 或者指向另一个对象。它有两个重载形式:
1. `void reset()`: 将 shared_ptr 对象重置为 nullptr,释放它所持有的对象的所有权。
2. `void reset(T* ptr)`: 将 shared_ptr 对象重置为指向 ptr 所指向的对象,释放它原来所持有的对象的所有权。
在第二种情况下,如果传入的指针是一个空指针,则将 shared_ptr 对象重置为 nullptr。reset 函数返回 void,因此不能通过 reset 函数来获取 shared_ptr 对象的引用或指针。
shared_ptr reset();
shared_ptr的reset()函数是用来重置智能指针的,它有四个重载版本。第一个版本不接受任何参数,它会释放当前智能指针所管理的对象,并将智能指针置为空。第二个版本接受一个指针作为参数,它会释放当前智能指针所管理的对象,并接管参数指针所指向的对象。第三个版本接受一个指针和一个删除器作为参数,它会释放当前智能指针所管理的对象,并使用指定的删除器来删除参数指针所指向的对象。第四个版本接受一个指针、一个删除器和一个分配器作为参数,它会释放当前智能指针所管理的对象,并使用指定的删除器和分配器来删除和分配参数指针所指向的对象。
阅读全文