C++(std::shared_ptr 的成员函数 reset)

发布时间 2023-12-12 15:26:41作者: 做梦当财神

std::shared_ptr 是 C++ 标准库提供的智能指针类型之一,用于管理动态分配的资源。resetstd::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 使用引用计数来跟踪所有者数量。