Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Création et Partage de Shared Pointers | 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. Sujets Avancés

book
Création et Partage de Shared Pointers

L'approche recommandée

La manière recommandée de créer un pointeur partagé est d'utiliser la fonction std::make_shared. Cette approche est généralement plus efficace et expressive par rapport à l'utilisation de new. Elle alloue la mémoire pour l'objet et le bloc de contrôle (compteur de références) en une seule étape. Par exemple :

h

make_shared

copy
12
// Create a shared pointer to an integer std::shared_ptr<int> p_int = std::make_shared<int>(42);

La ligne ci-dessus alloue un entier dynamique et initialise également un pointeur partagé vers celui-ci avec un compteur de références de un.

L'approche déconseillée

Vous pouvez également créer des pointeurs partagés en utilisant new, mais cette méthode est déconseillée car elle n'est ni expressive ni efficace. La syntaxe de cette approche nécessite de passer l'objet au constructeur du pointeur partagé.

h

creating_shared_pointer

copy
12
// Also creates a shared pointer to an integer std::shared_ptr<int> p_int(new int(42));

Allouer un entier dynamique puis le passer au constructeur du pointeur partagé. Cependant, le bloc de contrôle (compte de référence) sera initialisé à l'intérieur du constructeur.

Cela signifie que nous effectuons deux initialisations distinctes, ce qui est inefficace et une erreur pourrait être générée.

Passer des Pointeurs Partagés

Les pointeurs partagés sont conçus pour un partage sécurisé. Explorons quelques façons de les transmettre.

question mark

Si quatre instances de shared_ptr partagent la propriété du même objet dynamique, quand le destructeur de l'objet sera-t-il appelé ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

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