Namespaces
Variants

std::weak_ptr<T>:: reset

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
void reset ( ) noexcept ;
(C++11以降)

管理対象オブジェクトへの参照を解放します。呼び出し後、 * this は何もオブジェクトを管理しません。

目次

翻訳のポイント: - 「Contents」を「目次」に翻訳 - HTMLタグ、属性、クラス名は一切変更せず保持 - ` `内のテキストはC++関連の用語(Parameters, Return value, Example, See also)なので翻訳せず保持 - 数値、構造、フォーマットは完全に維持

パラメータ

(なし)

戻り値

(なし)

#include <iostream>
#include <memory>
int main()
{
    auto shared = std::make_shared<int>(), shared2 = shared, shared3 = shared2;
    auto weak = std::weak_ptr<int>{shared};
    std::cout << std::boolalpha 
              << "shared.use_count(): " << shared.use_count() << '\n'
              << "weak.use_count(): " << weak.use_count() << '\n'
              << "weak.expired(): " << weak.expired() << '\n';
    weak.reset();
    std::cout << "weak.reset();\n"
              << "shared.use_count(): " << shared.use_count() << '\n'
              << "weak.use_count(): " << weak.use_count() << '\n'
              << "weak.expired(): " << weak.expired() << '\n';
}

出力:

shared.use_count(): 3
weak.use_count(): 3
weak.expired(): false
weak.reset();
shared.use_count(): 3
weak.use_count(): 0
weak.expired(): true

関連項目

参照先のオブジェクトが既に削除されているかどうかをチェックする
(public member function)