Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Introduction aux Pointeurs Faibles | Pointeurs Faibles
Pointeurs Intelligents C++
course content

Contenu du cours

Pointeurs Intelligents C++

Pointeurs Intelligents C++

1. Introduction aux Pointeurs Intelligents
2. Pointeurs Uniques
3. Pointeurs Partagés
4. Pointeurs Faibles
5. Sujets Avancés

book
Introduction aux Pointeurs Faibles

Le pointeur intelligent std::weak_ptr ne possède pas l'objet auquel il pointe. Cela signifie essentiellement qu'un pointeur faible n'augmente pas le compteur de références de l'objet.

Un std::weak_ptr permet d'accéder à un objet géré par des pointeurs partagés sans prolonger sa durée de vie. Si tous les pointeurs partagés sortent de la portée, l'objet est supprimé, même si un pointeur faible existe toujours. Cela est utile pour observer des objets partagés sans empêcher leur désallocation.

cpp

main

copy
12345678910111213141516171819
#include <iostream> #include <memory> struct Resource { Resource() { std::cout << "Resource created\n"; } ~Resource() { std::cout << "Resource destroyed\n"; } }; int main() { std::shared_ptr<Resource> sp1 = std::make_shared<Resource>(); std::weak_ptr<Resource> wp = sp1; // Weak pointer does not increase ref count std::cout << "Shared pointer going out of scope...\n"; sp1.reset(); // Resource is deleted if (wp.expired()) std::cout << "Resource no longer exists\n"; }

Le cycle de vie d'un pointeur faible

Les pointeurs faibles sont des observateurs qui peuvent accéder à un objet mais n'étendent pas sa durée de vie.

Leur cycle de vie dépend des pointeurs partagés. Lorsque le dernier pointeur partagé est détruit, l'objet est désalloué, et le pointeur faible expire. Il existe toujours mais devient vide.

question mark

Si 10 pointeurs partagés et 1 pointeur faible référencent une ressource, que se passe-t-il lorsque tous les pointeurs partagés sortent de la portée ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 4. Chapitre 1
We're sorry to hear that something went wrong. What happened?
some-alt