C ++ std auto_ptr

C ++ std auto_ptr
Les pointeurs sont ceux qui sont utilisés pour accéder aux ressources qui sont externes au programme comme la mémoire du tas. Lorsque nous devons accéder au tas de mémoire, supposons que nous ayons une valeur entière qui est stockée dans le tas de mémoire, nous pouvons y accéder en utilisant des pointeurs. Parfois, en raison de l'inconscience, les pointeurs ne sont pas disloqués et cela peut provoquer une fuite de mémoire ou il peut écraser l'ensemble du programme. Pour empêcher cette situation, des pointeurs intelligents sont utilisés, dans ce mécanisme lorsque l'objet est détruit, la mémoire est également libérée. Plusieurs pointeurs intelligents peuvent être utilisés mais, dans ce tutoriel, nous discuterons du pointeur automobile.

De plus, le pointeur automatique est le pointeur intelligent. Il prend un pointeur brut, l'enroule et s'assure que la mémoire pointée par le pointeur brut est relâchée chaque fois que l'objet de pointeur automatique sort de la portée, à tout moment, un pointeur automatique peut pointer vers un objet. Par conséquent, chaque fois qu'un pointeur automobile est affecté à un autre pointeur automobile, la propriété est transférée à l'instance de pointeur automatique qui a reçu l'affectation. La même chose se produira lorsqu'un pointeur automatique sera copié.

Les pointeurs automobiles sont les mêmes que le pointeur unique ou nous pouvons dire que le pointeur unique est la nouvelle version du pointeur automatique. Lorsque l'objet est déclaré à l'aide de pointeur automatique, il stockera le pointeur dans un seul objet qui garantit que chaque fois que le pointeur sort de la portée, l'objet auquel il pointe sera automatiquement détruit.

Syntaxe

La syntaxe pour déclarer un pointeur automatique est illustrée ci-dessous:

std :: auto_ptr p (nouveau int);

Dans la syntaxe ci-dessus «P» est l'objet de pointeur automatique que nous avons déclaré où le «type» est le type de données que le pointeur P contiendra. Et en utilisant le nouveau mot-clé, nous avons alloué le tas de mémoire à l'entier que nous voulons stocker dedans.

Exemple # 01:

Pour comprendre le fonctionnement du pointeur automatique en détail, nous effectuerons un exemple dans lequel nous déclarerons un pointeur automobile et afficherons l'emplacement de la mémoire à laquelle il sera référencé à. Maintenant, passons à notre code où l'ensemble du processus sera effectué de la création à l'allocation de mémoire. Nous inclurons d'abord notre fichier d'en-tête le «iOStream» et le second «mémoire». Le «iOStream» est le package de bibliothèque qui permet au codeur d'effectuer diverses opérations d'entrée-sortie. Tandis que la bibliothèque «mémoire» est celle qui implique d'activer l'allocation du tas de mémoire. En dehors de la fonction principale, nous avons déclaré deux classes d'objets. Le premier est nommé «Autopointer» qui sera appelé à l'aide d'un pointeur automatique. À l'intérieur de l'objet "Autopointer", nous avons créé une fonction publique nommée "Show ()".

Le but de l'utilisation du mot clé public est de le rendre accessible pour toutes les fonctions à l'intérieur du code. Dans notre fonction show (), nous avons affiché un message de création de pointeur, chaque fois que le pointeur est créé pour l'objet «automatique», il affichera le message. La deuxième classe d'objets est nommée «AutoPointer2» que nous avons créée pour notre deuxième pointeur automatique à laquelle nous avons également passé l'instruction «cout» en affichant le message de «Second_PTR créé».

Maintenant, montez dans la fonction principale qui renvoie le type entier. Nous déclarons d'abord un pointeur automatique sur un objet du type «automatique» nommé «first_ptr». En utilisant le nouveau mot clé, nous avons alloué le tas de mémoire à l'objet «Autopointer» dans la ligne suivante de notre code, nous avons appelé la fonction Show en utilisant le pointeur «first_ptr». En cela, nous avons utilisé l'opérateur de flèche «->», en C ++, il nous permet d'accéder aux éléments à partir des objets. Ils sont utilisés avec les variables du pointeur qui pointent vers la classe d'objets. Lorsque la fonction Show est appelée à l'aide du «first_ptr», il affichera le message «First_PTR créé» puis, en utilisant la méthode get () qui est fournie pour obtenir l'emplacement de la mémoire ou les données stockées dans un tas de mémoire. Mais dans notre cas, nous obtiendrons l'adresse d'où le tas de mémoire où le «premier_ptr» est alloué.

Après avoir affiché l'emplacement «first_ptr», nous créerons un autre pointeur automatique nommé «second_ptr» du type d'objet «Autopointer2». Encore une fois, en utilisant le nouveau pointeur, nous avons réservé l'emplacement de la mémoire pour celui-ci. Maintenant, passant à la ligne suivante, nous utilisons la fonction «second_ptr» que nous avons appelée la fonction «show ()» que nous avons créée pour l'objet «AutoPointer2». Une chose à retenir est que lorsque nous déclarons un pointeur automatique pour un objet, il obtiendra la fonction de l'objet de classe pour lequel nous avons créé le pointeur. Il n'obtiendra pas la fonction de l'autre classe d'objets s'ils ont les mêmes noms. Comme dans notre cas dans les deux classes d'objets, nous avons créé les mêmes fonctions nommées «Show ()». Après cela, en utilisant la méthode get (), nous avons accédé au tas de mémoire à l'aide du "second_ptr" où le deuxième pointeur "second_ptr" est stocké. À la fin du code, nous avons renvoyé la valeur nulle, ce qui signifie que le programme sera exécuté avec succès sans aucune erreur et effectuera la tâche souhaitée pour laquelle il est destiné à.

#inclure
#inclure
Utilisation de Namespace Std;
classe Autopointer
public:
void show () cout<< "first_Ptr created" <;
classe autopointer2
public:
void show () cout<< "second_Ptr created" <;
int main()

auto_ptrfirst_ptr (nouveau automatique);
first_ptr-> show ();
couter<auto_ptrSecond_ptr (new AutoPointer2);
second_ptr-> show ();
couter<retour 0;

Maintenant, voyons la sortie que nous avons obtenue à la suite du code que nous avons écrit qui est affiché dans l'extrait ci-dessus. Comme nous pouvons le voir dans cette sortie, nous avons affiché le message de création de pointeur pour nos deux pointeurs. L'emplacement de la mémoire pour les deux pointeurs s'est affiché sans aucune erreur.

Conclusion

Dans ce tutoriel, nous avons démontré le comportement interne du pointeur automatique. Le pointeur automatique a été introduit dans C ++ 3. En utilisant des exemples et des scénarios, nous l'avons expliqué brièvement pour faciliter la compréhension du fonctionnement et de la méthodologie de la façon dont il est utilisé. Les pointeurs automobiles sont obsolètes en raison de leur propriété. Il est propriétaire d'une manière que deux pointeurs en même temps ne peuvent pas avoir le même objet.