C ++ Std Unique_ptr

C ++ Std Unique_ptr
Ein einzigartiger Zeiger ist ein kluger Zeiger. Um zu diskutieren, was ein einzigartiger Zeiger ist, müssen wir verstehen, was intelligente Zeiger sind. Das Hinzufügen und Entfernen von Elementen kann mit intelligenten Zeigern automatisiert werden. Intelligente Zeiger bedeuten, dass Sie, wenn Sie jetzt anrufen. Intelligente Zeiger sind am besten, um all dies zu erreichen.

Wenn der intelligente Zeiger erstellt wird, ruft er automatisch neu an und zuteilt den Speicherhaufen. Basierend auf welchem ​​Smart -Zeiger, den Sie verwenden, wird dieser Speicher automatisch frei. Kommen wir nun zu unserem Hauptthema, dem einzigartigen Zeiger. Ein einzigartiger Zeiger wird beseitigt, wenn er aus dem Zielfernrohr geht. Einzigartige Zeiger können nicht auf den anderen Zeiger kopiert werden, unabhängig davon. Wenn der eindeutige Zeiger kopiert wurde, bedeutet dies zu einer Zeit, dass zwei Zeiger auf denselben Speicherhaufen zeigen. Deshalb können wir keine einzigartigen Zeiger kopieren. Einzigartige Zeiger stellen sicher, dass sie ihre Objekte mit ihnen löschen.

Syntax

Die Syntax zum Erstellen eines einzigartigen Zeigers lautet wie folgt:

std :: Unique_ptr P (neuer int);

Hier wird das dynamisch erstellte Objekt auch zerstört, wenn der einzigartige Zeiger selbst zerstört wird.

Beispiel # 01:

Um einzigartige Zeiger ausführlicher zu verstehen, werden wir ein Beispiel geben. In diesem Beispiel haben wir eine Struktur namens Person definiert. "Person" hat einen Konstruktor, der eine Zeichenfolge als Parameter nimmt und den Wert druckt. Es hat auch einen Destruktor, der bei Zerstörung „gelöscht“ druckt, damit wir verstehen können, dass die Person zerstört wird. In der Hauptmethode haben wir einen einzigartigen Zeiger deklariert und ihm einen Wert übergeben. „Jack.”.

Jetzt nimmt dieser Zeiger "Jack" und übergibt ihn an die Erinnerung, auf die er zeigt, dass die Struktur "Person" ist. Der Wert „Jack“ geht zum Konstruktor und wird gedruckt. Danach löscht der eindeutige Zeiger das Objekt automatisch und „gelöscht!”Wird auf dem Bildschirm gedruckt. Lassen Sie uns nun unseren Code ausführen und ausführen, um die Ausgabe zu sehen.

#enthalten
#enthalten
Verwenden von Namespace STD;
Struktur Person

Person (Zeichenfolge n): Name (n)

Cout<
~ Person ()

Cout<< "Deleted!";

Zeichenfolge Name;
;
int
hauptsächlich ()

auto p = make_unique ("jack");
Rückkehr 0;

Unser Code wurde erfolgreich ausgeführt und gibt uns die erwartete Ausgabe. Der einzigartige Zeiger hat den Wert „Jack“ genommen und ihn an den Konstruktor weitergegeben, weil er auf das Objekt der „Person“ -Struktur hinwies. Der Konstruktor hat den Wert gedruckt. Danach wird „gelöscht“ gedruckt. Nun, hier haben wir nur den Wert gedruckt. In Echtzeitszenarien können wir jedoch alle Vorgänge ausführen und nach der Durchführung des Betriebs wird das Objekt der Struktur oder der Klasse selbst zerstört.

Beispiel # 02:

In diesem Beispiel haben wir versucht, den eindeutigen Konstruktor im Detail zu erklären. Wir haben auch versucht, einen einzigartigen Zeiger anders zu erzeugen, damit Sie die verschiedenen Syntaxen und Ansätze verstehen können, um einzigartige Zeiger zu erstellen. Um dieses Beispiel auszuführen, haben wir eine Klasse mit dem Namen "Uniqueptr" erstellt. In dieser Klasse haben wir einen Konstruktor dieser Klasse und einen Destruktor. Im früheren Beispiel haben wir erklärt, dass wir die gewünschten Operation im Konstruktor durchführen können. In diesem Beispiel haben wir versucht, dies zu tun, um Ihnen eine praktische Erfahrung zu bieten.

Im Konstruktor haben wir also zuerst „im Konstruktor“ gedruckt, um den Benutzer wissen zu lassen, dass wir uns derzeit in unserem Konstruktor befinden. Danach haben wir zwei ganze Zahlen "x" und "y" deklariert, die die Werte von "2" und "3" enthalten. Danach haben wir eine weitere Variable erklärt, die auch eine Ganzzahl ist: "Z". Wir haben die Werte von "X" und "Y" zusammengefasst oder hinzugefügt und die Ausgabe in der Integer "Z" gespeichert. In Zeile Nr. 13 haben wir "Operation durchgeführt" gedruckt und auch den Wert von „z“ dagegen gedruckt, damit wir den Benutzer wissen lassen, dass der Vorgang ausgeführt wird und der Wert nach dem Vorgang wie folgt ist.

In unserem Destruktor haben wir einfach "in Destructor" gedruckt, dass wir einfach "in Destructor" gedruckt haben. In der Hauptmethode haben wir einfach den eindeutigen Zeiger erstellt und ihm den Klassennamen übergeben, damit er verstehen kann, auf welchen Speicher er hinweisen muss. Jetzt werden wir unseren Code ausführen, um die Ausgabe zu überprüfen.

#enthalten
#enthalten
Verwenden von Namespace STD;
Klasse Uniqueptr

öffentlich:
Uniqueptr ()

Cout<<”In constructor”<int x = 2;
int y = 3;
int z = x + y;
Cout<<”Operation Performed = “<
~ Uniqueptr ()

Cout<<”In Destructor”<
;
int main ()

STD :: einzigartig_ptr x = std :: Unique_ptr (neue Uniqueptr);
Rückkehr 0;

Nachdem unser Code ausgeführt wurde, ist Folgendes die Ausgabe, die wir vom System erhalten. Eine Sache, die Sie hier erklären sollten, ist, dass wir in unserer Hauptmethode kein Objekt der Klasse erstellt haben, um darauf zuzugreifen. Stattdessen haben wir nur einen einzigartigen Zeiger erstellt und ihn auf unsere Klasse hingewiesen. Das System hat "im Konstruktor" gedruckt, was bedeutet, dass es im Konstruktor und die andere gedruckte Zeile auch erklärt wird, dass das System den Additionsvorgang der Ganzzahlen durchgeführt und den Wert gegen die gedruckte Nachricht gedruckt hat. Zuletzt bewegte sich der Compiler in den Destruktor, druckte die Nachricht und zerstörte das Objekt der Klasse. Eine Sache, die hier zu beachten ist, ist, dass wir hier den Speicherhaufen nicht erstellt oder gelöscht haben. Das Ganze wurde von unserem einzigartigen Zeiger gemacht.

Abschluss

In diesem Leitfaden haben wir eine Art intelligenter Zeiger besprochen, der ein einzigartiger Zeiger ist. Einzigartige Zeiger sind intelligente Zeiger, die uns bei der Speicherzuweisung und Speicherverwaltung helfen. Um einzigartige Zeiger zu verstehen, haben wir theoretisch zuerst intelligente Zeiger und einzigartige Zeiger erklärt. Danach erklärten wir die Syntax einzigartiger Zeiger. In verschiedenen Szenarien wurden mehrere Beispiele durchgeführt, um den Leser praktisch einzigartige Zeiger zu verstehen.