C++(std::shared_ptr 的成员函数 reset)
std::shared_ptr 是 C++ 标准库提供的智能指针类型之一,用于管理动态分配的资源。reset 是 std::shared_ptr 类的成员函数之一,用于重新分配或重置 std::shared_ptr 所拥有的指针。
以下是 reset 成员函数的基本解释:
函数签名:
template< class Y >
void reset( Y* ptr );
参数:
ptr: 要被std::shared_ptr管理的新指针。
功能:
reset 函数的作用是将 std::shared_ptr 的所有权转移到新的指针上,同时释放原有指针所管理的资源。
示例:
#include <iostream>
#include <memory>
int main() {
// 创建一个 shared_ptr,指向动态分配的整数
std::shared_ptr<int> sharedInt = std::make_shared<int>(42);
// 输出原始指针的值
std::cout << *sharedInt << std::endl; // 输出 42
// 重新分配 shared_ptr 的指针,同时释放原有资源
sharedInt.reset(new int(100));
// 输出新的指针的值
std::cout << *sharedInt << std::endl; // 输出 100
return 0;
}
42
100
在上述示例中,reset 函数将 sharedInt 的所有权转移到一个新的 int 对象上,同时释放了原有 int 对象的资源。这种操作可以用于在运行时更改 std::shared_ptr 所管理的对象。
需要注意的是,当调用 reset 时,如果 std::shared_ptr 还有其他的共享指针共享同一个对象,该对象的资源将在最后一个共享指针销毁时释放。这是因为 std::shared_ptr 使用引用计数来跟踪所有者数量。

浙公网安备 33010602011771号