Contenu du cours
Pointeurs Intelligents C++
Pointeurs Intelligents C++
Fonctions de Pointeur Partagé à Retenir
Nous avons déjà exploré ce que sont les pointeurs partagés, et comment les créer et les partager. Maintenant, examinons certaines fonctions et opérateurs importants qui rendent les pointeurs partagés encore plus puissants et flexibles.
La fonction reset
La fonction reset
vous permet de réinitialiser un pointeur partagé, c'est-à-dire de libérer sa propriété de l'objet dynamique. Lorsque vous appelez reset
, le compteur de références diminue, et s'il n'y a pas d'autres pointeurs partagés référant à l'objet pointé, la mémoire est automatiquement désallouée.
Remarque
Si d'autres pointeurs partagés référencent l'objet, le compteur de références diminue. Néanmoins, l'objet persiste jusqu'à ce que tous les pointeurs partagés soient réinitialisés ou sortent de la portée. Cette fonction sert efficacement deux objectifs.
Lors de la réaffectation d'un pointeur partagé
Lorsque vous passez un nouvel objet en tant qu'argument à la fonction reset
, le pointeur partagé commence à pointer vers le nouvel objet.
Dans le code ci-dessus, nous réaffectons sharedPtr
à une nouvelle instance de MyClass
.
Lors de la libération de la propriété
Si vous appelez reset
sans aucun paramètre, le pointeur partagé cesse simplement de pointer vers l'objet dynamique.
Dans le code ci-dessus, nous libérons simplement la propriété de l'entier dynamique de sharedInt
.
La fonction swap
Utilisez la fonction swap
lorsque vous souhaitez échanger le contenu de deux pointeurs partagés. N'oubliez pas que lorsque vous échangez deux pointeurs partagés, leurs comptes de références et la propriété des objets dynamiques sont également échangés.
Dans le code ci-dessus, nous échangeons deux pointeurs partagés qui pointent tous deux vers des entiers dynamiques. Après l'exécution du code, sharedInt1
contiendra la valeur 99, tandis que sharedInt2
contiendra la valeur 42.
La fonction get
Tout comme les pointeurs uniques, chaque pointeur partagé détient un pointeur brut vers l'objet dynamique. Vous pouvez utiliser la fonction get
pour récupérer le pointeur brut, sans affecter le compteur de références.
Dans le code ci-dessus, nous extrayons un pointeur brut d'un pointeur partagé. Cela peut être nécessaire lorsque vous travaillez avec du code hérité qui ne prend pas en charge les pointeurs intelligents.
La fonction use_count
La fonction use_count
vous permet d'inspecter le nombre de références actuel d'un pointeur partagé. Elle est particulièrement utile pour le débogage et pour s'assurer que la propriété partagée fonctionne comme prévu.
Dans le code ci-dessus, nous utilisons la fonction use_count
pour obtenir le nombre de références actuel du pointeur partagé.
Opérateurs de pointeur partagé
Les pointeurs partagés fournissent plusieurs opérateurs pour rendre le code C++ plus concis et lisible. Par exemple :
- Les opérateurs
==
et!=
vous permettent de comparer un pointeur partagé avec un autre pointeur partagé, ou avecnullptr
. - L'opérateur de déréférencement
*
permet d'accéder à l'objet dynamique pointé par le pointeur partagé. - L'opérateur flèche
->
facilite l'accès aux membres de l'objet pointé par le pointeur partagé.
Merci pour vos commentaires !