Utilisation de C ++ unique_ptr

Utilisation de C ++ unique_ptr
Les pointeurs intelligents sont utilisés pour allouer la ressource dynamiquement. De nombreux types de pointeurs intelligents sont utilisés en C ++ à diverses fins, telles que auto_ptr, unique_ptr, et shared_ptr. Le pointeur auto_ptr est déprécié dans la nouvelle version de C++. Le_ptr unique est utilisé dans le remplacement de l'Auto_PTR. L'objet de ce pointeur peut s'approprier le pointeur. L'objet de ce pointeur possède le pointeur unique, et aucun autre pointeur ne peut pointer vers l'objet. Le_ptr unique supprime automatiquement les objets. Ce pointeur gère ces objets si les objets sont détruits, ou si la valeur de l'objet est modifiée ou si la fonction reset () est appelée. Les fonctionnalités de l'Unique_ptr et les utilisations de ce pointeur sont discutées dans ce tutoriel.

Composants majeurs:

Deux composants principaux de l'objet Unique_PTR sont fournis ci-dessous:

UN. Pointeur stocké:

Il est utilisé pour gérer les objets créés par un pointeur unique. Il est créé au moment de la création du pointeur, et il peut être modifié de différentes manières.

B. Deeter stocké:

Il faut l'argument du type de pointeur stocké qui est utilisé pour supprimer l'objet géré. Il est également créé au moment de la création du pointeur, et il peut être modifié de différentes manières.

Exemple 1: Créez un objet de pointeur d'une classe avec constructeur

La façon de déclarer les objets de pointeur uniques d'une classe et d'accéder à la méthode de la classe consiste à utiliser les objets comme indiqué dans l'exemple suivant. Une classe avec un constructeur et une méthode publique ont été déclarées dans le code. Le constructeur a trois arguments. Le premier pointeur unique a été créé en appelant le constructeur avec trois valeurs d'argument. Le Résultat() La méthode est appelée par l'objet de pointeur qui calcule la somme de trois valeurs d'argument du constructeur. Ensuite, le deuxième objet de pointeur unique est créé sans appeler le constructeur, et le premier pointeur est déplacé vers le deuxième pointeur. Le Résultat() la méthode est appelée par le deuxième objet de pointeur.

// Inclure les bibliothèques nécessaires
#inclure
#inclure
usingNamespace std;
// définir la classe
Classe Addition
int numéro1, numéro2, numéro3;
public:
// Déclarer le constructeur
Addition (int a, int b, int c)

Number1 = a;
nombre2 = b;
nombre3 = c;

// Déclarer la méthode pour calculer la somme
INT Result ()

return numéro1 + nombre2 + numéro3;

;
int main()

// déclare le premier pointeur
UNIQUE_PTR POINTER1 (nouvel ajout (45, 55, 30));
couter<<"The result of sum using the first pointer :"// déclare le deuxième pointeur
UNIQUE_PTR POINTER2;
// déplace le premier pointeur vers le deuxième pointeur
pointer2 = move (pointer1);
couter<<"The result of sum using the second pointer :"return0;

Sortir:

La sortie suivante apparaîtra après avoir exécuté le code ci-dessus. La somme de 45, 55 et 30 est 130 qui a été imprimée pour les deux pointeurs.

Exemple 2: Créez un objet de pointeur d'une classe avec constructeur et destructeur

La façon de déclarer un objet de pointeur unique d'une classe avec constructeur et destructeur a été montré dans l'exemple suivant. La classe contient un constructeur avec un argument, une méthode publique nommée affichage () à la valeur de la variable de classe, et un destructeur qui imprimera un message de détruire avant de détruire l'objet de la classe. La méthode affichage () est appelée après avoir créé l'objet de pointeur unique dans le code.

// Inclure les bibliothèques nécessaires
#inclure
#inclure
usingNamespace std;
// définir la classe
client de classe

nom de chaîne;
public:
// Déclarer le constructeur
Client (chaîne N)

name = n;
couter<<"The resource is allocated.\n";

// Déclarer la méthode pour imprimer le nom du client
vide affiche ()

couter<<"The name of the customer is: "<< name <<"\n";

// déclare le destructeur
~ Client ()

couter<<"The resource is destroyed.\n";

;
int main()

// allouer l'objet de ressource qui appartient au UNIQUE_PTR
UNIQUE_PTRUPOINTER nouveau client ("Mir Abbas");
upointer-> display ();
return0;

Sortir:

La sortie suivante apparaîtra après avoir exécuté le code ci-dessus:

Exemple 3: Vérifiez le pointeur après avoir transféré la propriété

La façon de vérifier la propriété du pointeur unique s'est montrée dans l'exemple suivant en créant deux pointeurs uniques d'une classe. Une classe avec deux variables de chaîne et une méthode publique ont été déclarées dans le code. La méthode book_details () de la classe est appelée après avoir créé le premier objet de pointeur unique de la classe. Ensuite, le deuxième objet de pointeur unique a été créé, et le premier pointeur a été déplacé vers le deuxième pointeur qui détruit le premier pointeur. La propriété des deux pointeurs doit être vérifiée plus tard.

// Inclure les bibliothèques nécessaires
#inclure
#inclure
usingNamespace std;
// définir la classe
livre de classe
String title = "Le langage de programmation C ++";
String auteur = "Bjarne Stroustrup";
public:
// Déclarer la méthode des détails du livre imprimé
voidbook_details ()

couter<<"Book Name: "<< title <<"\n";
couter<<"Author Name: "<< author <<"\n";

;
int main()

// déclare le premier pointeur
UNIQUE_PTR POINTER1 (nouveau livre ());
pointer1-> book_details ();
// déclare le deuxième pointeur
UNIQUE_PTR POINTER2;
// déplace le premier pointeur vers le deuxième pointeur
pointer2 = move (pointer1);
// Vérifiez le premier pointeur
if (static_cast (pointer1)) cout<<"The first poiner is not null\n";
elsecout<<"The first poiner is null\n";
// Vérifiez le deuxième pointeur
if (static_cast (pointer2)) cout<<"The second poiner is not null\n";
elsecout<<"The second poiner is null\n";
return0;

Sortir:

La sortie suivante apparaîtra après avoir exécuté le code ci-dessus. Selon la sortie, la propriété du premier pointeur a été supprimée et le message: «Le premier pointeur est nul»A imprimé pour le premier pointeur. La propriété du deuxième pointeur existe et le message: «Le premier pointeur n'est pas nul»A imprimé pour le deuxième pointeur:

Conclusion:

Les objectifs de l'utilisation d'un pointeur unique dans la programmation C ++ ont été décrits dans ce tutoriel en utilisant plusieurs exemples. Les moyens de créer un pointeur unique, de transférer la propriété du pointeur et de vérifier la propriété actuelle du pointeur ont été expliquées ici pour aider les lecteurs à connaître correctement l'utilisation du pointeur unique.