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 ;
(depuis C++11)

Libère la référence à l'objet managé. Après l'appel * this ne gère plus aucun objet.

Table des matières

Paramètres

(aucun)

Valeur de retour

(aucun)

Exemple

#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';
}

Sortie :

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

Voir aussi

vérifie si l'objet référencé a déjà été supprimé
(fonction membre publique)