Hauptkomponenten:
Zwei Hauptkomponenten des einzigartigen_PTR -Objekts finden Sie unten:
A. Gespeicherter Zeiger:
Es wird verwendet, um die von einem einzigartigen Zeiger erstellten Objekte zu verwalten. Es wird zum Zeitpunkt der Zeigererstellung erstellt und kann auf unterschiedliche Weise verändert werden.
B. Gespeicherter Deleter:
Es dauert das Argument des gespeicherten Zeigertyps, mit dem das verwaltete Objekt gelöscht wird. Es wird auch zum Zeitpunkt der Zeigererstellung erstellt und kann auf unterschiedliche Weise verändert werden.
Beispiel 1: Erstellen Sie ein Zeigerobjekt einer Klasse mit Konstruktor
Die Möglichkeit, die einzigartigen Zeigerobjekte einer Klasse zu deklarieren und auf die Methode der Klasse zuzugreifen. Eine Klasse mit einem Konstruktor und einer öffentlichen Methode wurde im Code deklariert. Der Konstruktor hat drei Argumente. Der erste eindeutige Zeiger wurde erstellt, indem der Konstruktor mit drei Argumentwerten aufgerufen wird. Der Ergebnis() Die Methode wird vom Zeigerobjekt aufgerufen, das die Summe von drei Argumentwerten des Konstruktors berechnet. Als nächstes wird das zweite eindeutige Zeigerobjekt erstellt, ohne den Konstruktor aufzurufen, und der erste Zeiger wird auf den zweiten Zeiger verschoben. Der Ergebnis() Die Methode wird durch das zweite Zeigerobjekt aufgerufen.
// notwendige Bibliotheken einschließen
#enthalten
#enthalten
Verwenden von NameSpace STD;
// die Klasse definieren
Klasse Addition
int Nummer1, Nummer2, Nummer3;
öffentlich:
// den Konstruktor deklarieren
Addition (int a, int b, int c)
Nummer1 = a;
Nummer2 = b;
Nummer3 = C;
// Methode deklarieren, um die Summe zu berechnen
int result ()
Rückgabenummer1 + Nummer2 + Nummer3;
;
int main ()
// den ersten Zeiger deklarieren
Unique_ptr Pointer1 (Neuzugang (45, 55, 30));
Cout<<"The result of sum using the first pointer :"// den zweiten Zeiger deklarieren
Unique_ptr pointer2;
// Bewegen Sie den ersten Zeiger auf den zweiten Zeiger
pointer2 = move (pointer1);
Cout<<"The result of sum using the second pointer :"return0;
Ausgang:
Die folgende Ausgabe wird nach der Ausführung des obigen Codes angezeigt. Die Summe von 45, 55 und 30 ist 130, die für beide Zeiger gedruckt wurden.
Beispiel 2: Erstellen Sie ein Zeigerobjekt einer Klasse mit Konstruktor und Destruktor
Der Weg, um ein einzigartiges Zeigerobjekt einer Klasse mit Konstruktor und Destruktor zu deklarieren, wurde im folgenden Beispiel gezeigt. Die Klasse enthält einen Konstruktor mit einem Argument, eine öffentliche Methode mit dem Namen display () zum Wert der Klassenvariablen und einen Destruktor, der eine Zerstörungsnachricht druckt, bevor das Objekt der Klasse zerstört wird. Die Methode display () wird aufgerufen, nachdem das eindeutige Zeigerobjekt im Code erstellt wurde.
// notwendige Bibliotheken einschließen
#enthalten
#enthalten
Verwenden von NameSpace STD;
// die Klasse definieren
Klassenkunde
Zeichenfolge Name;
öffentlich:
// den Konstruktor deklarieren
Kunde (String n)
Name = n;
Cout<<"The resource is allocated.\n";
// Methode deklarieren, um den Kundennamen zu drucken
void Display ()
Cout<<"The name of the customer is: "<< name <<"\n";
// den Zerstörer deklarieren
~ Customer ()
Cout<<"The resource is destroyed.\n";
;
int main ()
// Zuordnen Sie das Ressourcenobjekt zu, das dem Unique_PTR gehört
Unique_ptrupointer New Customer ("Mir Abbas");
upointer-> display ();
return0;
Ausgang:
Nach der Ausführung des obigen Code wird die folgende Ausgabe angezeigt:
Beispiel 3: Überprüfen Sie den Zeiger nach der Übertragung des Eigentums
Die Möglichkeit, den Besitz des einzigartigen Zeigers zu überprüfen, hat im folgenden Beispiel gezeigt, indem zwei einzigartige Zeiger einer Klasse erstellt werden. Eine Klasse mit zwei Zeichenfolgenvariablen und einer öffentlichen Methode wurde im Code deklariert. Die Methode book_details () der Klasse wird nach dem Erstellen des ersten einzigartigen Zeigerobjekts der Klasse aufgerufen. Als nächstes wurde das zweite einzigartige Zeigerobjekt erstellt, und der erste Zeiger wurde auf den zweiten Zeiger verschoben, der den ersten Zeiger zerstört. Der Besitz beider Hinweise sollte später überprüft werden.
// notwendige Bibliotheken einschließen
#enthalten
#enthalten
Verwenden von NameSpace STD;
// die Klasse definieren
Klassenbuch
String title = "Die C ++ - Programmiersprache";
String Author = "Bjarne stroustrup";
öffentlich:
// Methode deklarieren, um Buchdetails zu drucken
voidbook_details ()
Cout<<"Book Name: "<< title <<"\n";
Cout<<"Author Name: "<< author <<"\n";
;
int main ()
// den ersten Zeiger deklarieren
Unique_ptr pointer1 (neues Buch ());
pointer1-> book_details ();
// den zweiten Zeiger deklarieren
Unique_ptr pointer2;
// Bewegen Sie den ersten Zeiger auf den zweiten Zeiger
pointer2 = move (pointer1);
// Überprüfen Sie den ersten Zeiger
if (static_cast (pointer1)) cout<<"The first poiner is not null\n";
Elsecout<<"The first poiner is null\n";
// Überprüfen Sie den zweiten Zeiger
if (static_cast (pointer2)) cout<<"The second poiner is not null\n";
Elsecout<<"The second poiner is null\n";
return0;
Ausgang:
Die folgende Ausgabe wird nach der Ausführung des obigen Codes angezeigt. Nach der Ausgabe wurde der Besitz des ersten Zeigers entfernt und die Nachricht “Der erste Zeiger ist nullHat für den ersten Zeiger gedruckt. Der Besitz des zweiten Zeigers existiert und die Botschaft “Der erste Zeiger ist nicht null”Hat für den zweiten Zeiger gedruckt:
Abschluss:
Die Zwecke der Verwendung eines einzigartigen Zeigers in C ++ - Programmierung wurden in diesem Tutorial unter Verwendung mehrerer Beispiele beschrieben. Die Möglichkeiten, einen einzigartigen Zeiger zu erstellen, das Eigentum des Zeigers zu übertragen und das aktuelle Eigentum des Zeigers zu überprüfen.