最終更新日時(UTC):
が更新

履歴 編集

function
<memory>

std::shared_ptr::reset(C++11)

void
  reset() noexcept;             // (1) C++11
constexpr void
  reset() noexcept;             // (1) C++26

template <class Y>
void
  reset(Y* p);                  // (2) C++11
template <class Y>
constexpr void
  reset(Y* p);                  // (2) C++26

template <class Y,
          class Deleter>
void
  reset(Y* p,
        Deleter d);             // (3) C++11
template <class Y,
          class Deleter>
constexpr void
  reset(Y* p,
        Deleter d);             // (3) C++26

template <class Y,
          class Deleter,
          class Allocator>
void
  reset(Y* p,
        Deleter d,
        Allocator a);           // (4) C++11
template <class Y,
          class Deleter,
          class Allocator>
constexpr void
  reset(Y* p,
        Deleter d,
        Allocator a);           // (4) C++26

概要

リソースの所有権を放棄し、新たなリソースの所有権を設定する。

効果

戻り値

なし

#include <memory>

int main()
{
  std::shared_ptr<int> p1(new int(3));
  std::shared_ptr<int> q1 = p1;

  // (1)
  // p1が共有している所有権を放棄する。
  // q1がまだ所有権を持っているので、リソースは解放されない。
  p1.reset();

  std::shared_ptr<int> p2(new int(3));
  std::shared_ptr<int> q2 = p2;

  // (2)
  // p2が現在共有している所有権を放棄し、新たなリソースの所有権を設定する。
  // p2とq2がそれぞれ、異なるリソースを所有することになる。
  p2.reset(new int(2));
}

出力

バージョン

言語

  • C++11

処理系

参照