C ++ STD auto_ptr

C ++ STD auto_ptr
Zeiger sind diejenigen, die verwendet werden, um auf die Ressourcen zugreifen zu können, die extern zum Programm sind wie dem Heap -Speicher. Wenn wir auf den Speicherhaufen zugreifen müssen, nehmen wir an, wir haben einen ganzzahligen Wert, der im Speicherhaufen gespeichert ist. Manchmal sind Zeiger aufgrund von Bewusstsein nicht verteilt und kann zu einem Speicherleck führen oder das gesamte Programm stürzt ab. Um diese Situation zu verhindern, werden intelligente Zeiger in diesem Mechanismus verwendet, wenn das Objekt zerstört wird, wird auch der Gedächtnis befreit. Mehrere intelligente Zeiger können verwendet werden, aber in diesem Tutorial werden wir den Auto -Zeiger diskutieren.

Auch der Autozeiger ist der intelligente Zeiger. Es dauert einen Rohzeiger, umhüllt ihn und stellt sicher. Wenn ein Auto -Zeiger einem anderen Autozeiger zugewiesen wird, wird der Besitz auf die automatische Zeigerinstanz übertragen, die die Aufgabe erhalten hat. Das Gleiche gilt, wenn ein Autozeiger kopiert wird.

Autozeiger sind die gleichen wie der einzigartige Zeiger oder wir können sagen, dass der einzigartige Zeiger die neue Version des Autozeigers ist. Wenn das Objekt mit einem Auto -Zeiger deklariert wird, speichert es den Zeiger in einem einzelnen Objekt, das sicherstellt.

Syntax

Die Syntax für die Erklärung eines Autozeigers ist unten dargestellt:

std :: auto_ptr P (neuer int);

In der Syntax über „P“ befindet sich das automatische Zeigerobjekt, das wir deklariert haben, wo der „Typ“ der Datentyp ist, den der Zeiger P enthält. Und mit dem neuen Schlüsselwort haben wir den Speicherhaufen der Ganzzahl zugeteilt, die wir darin speichern möchten.

Beispiel # 01:

Um die Funktionsweise des Autozeigers im Detail zu verstehen, werden wir ein Beispiel geben, in dem wir einen Autozeiger deklarieren und den Speicherort anzeigen, auf den er referenziert wird. Lassen Sie uns nun zu unserem Code wechseln, in dem der gesamte Prozess von der Erstellung zur Speicherzuweisung durchgeführt wird. Wir werden zuerst unsere Header -Datei "iostream" und den zweiten "Speicher" einschließen. Das „iOstream“ ist das Bibliothekspaket, mit dem der Codierer verschiedene Eingabe-Output-Vorgänge ausführen kann. Während die "Speicher" -Bibliothek diejenige ist, die die Zuweisung des Speicherhaufens aktiviert. Außerhalb der Hauptfunktion haben wir zwei Objektklassen deklariert. Der erste wird als "Autopointer" bezeichnet, der mit einem Autozeiger bezeichnet wird. In dem Objekt „Autopointer“ haben wir eine öffentliche Funktion namens "Show ()" erstellt.

Der Zweck der Verwendung des öffentlichen Schlüsselworts besteht darin, es für alle Funktionen im Code zugänglich zu machen. In unserer Show (show () -Funktion haben wir eine Meldung zur Erstellung von Zeiger angezeigt, wenn der Zeiger für das Objekt „Autopointer“ erstellt wird, wird die Nachricht angezeigt. Die zweite Objektklasse wird als "autopointer2" bezeichnet, die wir für unseren zweiten automatischen Zeiger erstellt haben, an den wir auch die Anweisung "Cout" übergeben haben, indem wir die Nachricht von "Second_Ptr erstellt" angezeigt haben.

Wechseln Sie nun in die Hauptfunktion, die den Ganzzahltyp zurückgibt. Wir deklarieren zunächst einen automatischen Zeiger für einen Objekt des Typs "Autopointer" mit dem Namen "First_Ptr". Mit dem neuen Schlüsselwort haben wir den Speicherhaufen dem Objekt "autopointer" in der nächsten Zeile unseres Codes zugeteilt. Wir haben die Showfunktion mit dem Zeiger "First_Ptr" bezeichnet. ". Darin haben wir den Pfeilbetreiber "->" in C ++ verwendet. Sie werden mit den Zeigervariablen verwendet, die auf die Objektklasse zeigen. Wenn die Show -Funktion mit dem "First_Ptr" aufgerufen wird, wird die Meldung "First_ptr erstellt" angezeigt, indem die Methode get () verwendet wird, die bereitgestellt wird, um den Speicherort oder die gespeicherten Daten in einem Speicherhaufen zu erhalten. In unserem Fall werden wir jedoch die Adresse erhalten, an der der Speicherhaufen, in dem das „First_Ptr“ zugewiesen wird.

Nachdem wir den Speicherort "First_Ptr" angezeigt haben, erstellen wir einen weiteren automatischen Zeiger mit dem Namen "Second_Ptr" des Objekttyps "autopointer2". Mit dem neuen Zeiger haben wir den Speicherort dafür auch hier reserviert. Wenn wir nun in die nächste Zeile wechseln, verwenden wir die Funktion „Second_PTR“, die wir als "show ()" -Funktion bezeichnet haben, die wir für das Objekt "autopointer2" erstellt haben. Eine Sache, an die Sie sich erinnern sollten, ist, wenn wir einen Autozeiger für ein Objekt deklarieren, wird die Funktion des Klassenobjekts, für das wir den Zeiger erstellt haben. Es wird nicht die Funktion der anderen Objektklasse erhalten, ob sie gleiche Namen haben. Wie in unserem Fall in beiden Objektklassen haben wir dieselben Funktionen mit dem Namen "Show ()" erstellt, die als "show ()" genannt werden. Danach haben wir mit der Methode get () auf den Speicherhaufen mit dem "Second_Ptr" zugegriffen, in dem der zweite Zeiger "Second_Ptr" gespeichert ist. Am Ende des Code haben wir den Nullwert zurückgegeben, was bedeutet, dass das Programm erfolgreich ohne Fehler ausgeführt wird und die gewünschte Aufgabe ausführt, für die es bestimmt ist.

#enthalten
#enthalten
Verwenden von Namespace STD;
Klasse Autopointer
öffentlich:
void show () Cout<< "first_Ptr created" <;
Klasse autopointer2
öffentlich:
void show () Cout<< "second_Ptr created" <;
int main ()

auto_ptrfirst_ptr (neuer autopointer);
First_ptr-> show ();
Cout<auto_ptrsecond_ptr (neuer autopointer2);
Second_ptr-> show ();
Cout<Rückkehr 0;

Lassen Sie uns nun die Ausgabe ansehen, die wir als Ergebnis des von uns geschriebenen Code erhalten haben, der im Snippet oben angezeigt wird. Wie wir in dieser Ausgabe sehen können, haben wir die Meldung der Zeigererstellung für unsere beiden Autozeiger angezeigt. Der Speicherort für beide Zeiger wurde ohne Fehler angezeigt.

Abschluss

In diesem Tutorial haben wir das interne Verhalten des Autozeigers gezeigt. Autozeiger wurde in C ++ 3 eingeführt. Indem wir Beispiele und Szenarien verwenden. Autozeiger sind wegen ihres Eigentums veraltet. Es erhält das Eigentum auf eine Weise, dass zwei gleichzeitig nicht das gleiche Objekt haben können.