Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Fonctions de Pointeur Partagé à Retenir | Pointeurs Partagés
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. Références
6. Sujets Avancés

book
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 avec nullptr.
  • 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é.
Que se passe-t-il lorsque nous appelons `swap` sur un pointeur partagé ?

Que se passe-t-il lorsque nous appelons swap sur un pointeur partagé ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

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