Wann nennen wir einen Kopierkonstruktor??
In der C ++ - Programmiersprache können wir in den folgenden Situationen eine Kopiefunktion aufrufen. Es wird aufgerufen, wenn wir ein Objekt der Klasse durch den Wert zurückgeben. Es wird auch empfohlen, einen Kopierkonstruktor in der Bedingung zu verwenden, wenn wir ein Objekt der Klasse durch einen Wert als Parameter übergeben, wenn wir ein Objekt erstellen, das von dem anderen Objekt zur gleichen Klasse erstellt wird.
Arten eines Kopierkonstruktors
Es gibt zwei Arten von Kopiekonstruktoren.
Konstruktor kopieren (Standard)
Wenn der Benutzer keinen Kopierkonstruktor definiert, liefert der Compiler in diesem Fall seinen Konstruktor.
Benutzerdefinierter Konstruktor
Der Programmierer definiert immer den benutzerdefinierten Konstruktor.
Wann brauchen wir einen Kopiekonstruktor??
Wenn unser Kopierkonstruktor nicht definiert ist, erstellt der Compiler C ++ den Kopierkonstruktor, der die Standardeinstellung ist. Wir müssen unseren Konstruktor definieren, wenn ein Objekt Zeiger, dynamische Speicherzuweisung oder andere Ressourcen verwendet.
Syntax
Name_of_class (const name_of_class & object_name)Nach der Verwendung des Kopierkonstruktors erhalten wir zwei Kopien. Man ist als flaches Kopie bekannt, während die zweite eine tiefe Kopie ist. Die flache Kopie wird vom Standardkopiekonstruktor erstellt. Während der Deep Copy Constructor den Speicher automatisch zuweist, kopiert er den tatsächlichen Wert. Die kopierten und tatsächlichen Werte werden an verschiedenen Stellen im Speicher gespeichert. Es wird gesagt, dass beim Erstellen eines benutzerdefinierten Konstruktors eine tiefe Kopie erforderlich ist.
Implementierung eines Kopierkonstruktors
Wir haben den Code im Texteditor von Ubuntu implementiert, und der resultierende Wert wird durch Ausführung auf dem Linux -Terminal erhalten.
Dieses Programm verwendet das objektorientierte Programmierkonzept, da Konstruktoren zum Erstellen von Klassen verwendet werden. Eine Klasse wird mit dem privaten Teil mit ganzzahligen Werten erstellt. Im öffentlichen Teil wird ein Konstruktor mit dem Namen der Klasse erstellt. Dieser Konstruktor verwendet zwei Werte im Parameter, um den vom Hauptprogramm übergebenen Wert zu empfangen. Innerhalb des Konstruktors werden die gesendeten Werte den neuen Variablen zugewiesen.
Nach dem Konstruktor wird wieder ein neuer Konstruktor erstellt. Es ist ein kopierter Konstruktor. Wie wir oben beschrieben haben, nimmt dieser Konstruktor den Klassennamen und das erstellte Objekt.
Dann haben wir zwei Funktionen verwendet, getX () und get (), die den Wert der Variablen zurückgeben. Im Hauptprogramm werden Konstruktoren unter Verwendung des Klassennamens jeweils (Original) aufgerufen, und der Kopierkonstruktor enthält Argumente im Parameter beim Aufrufen von Argumenten. Der normale Konstruktor enthält zwei Werte, die an die Variable übergeben werden. Und der Kopierkonstruktor wird mit dem Objekt der ersten Klasse zugewiesen. Um den resultierenden Wert anzuzeigen, werden wir die Funktion erhalten, indem wir Objekte beider Konstruktoren verwenden.
Wir speichern den Code und führen ihn mit dem Compiler G aus++.
Bei der Ausführung des Quellcode können Sie feststellen, dass beide Werte gleich sind wie die Konstruktoren entweder vom ursprünglichen oder vom Kopierkonstruktor.
Linked List Concept in C++
Eine verknüpfte Liste ist eine Datenstruktur, die mehrere Knoten enthält, die über die in jedem Knoten gespeicherten Adressen verbunden sind.
StrukturknotenWir erstellen eine Struktur mit einem Datenteil, das die Werte darin speichert, und den nächsten Teil, der die Adresse des benachbarten Knotens speichert. Der nächste Schritt ist, die Knoten im Hauptprogramm zu initialisieren. Alle Knoten werden durch die Verwendung der Zeiger als Null deklariert.
Jeder Datenteil des Knotens wird von den Werten zugewiesen. Dies geschieht durch den Zugriff auf diesen Teil des Knotens.
Ein -> Daten = 1;Ebenso erhalten alle Knoten ihre relevanten Daten.
Die Hauptsache in der verknüpften Liste ist die Verbindung zwischen den erstellten Knoten. Dies geschieht, wenn der nächste Teil eines Knotens mit der Adresse des zweiten Knotens zugewiesen wird. In ähnlicher Weise enthält der zweite Knoten die Adresse des dritten. Und so weiter dauert dieser Prozess bis zum letzten Knoten. Der nächste Teil des letzten Knotens wird null erklärt, da es hier keinen weiteren Knoten gibt.
Der Kopierkonstruktor und die verknüpfte Liste in C++
Für die Verwendung eines Kopierkonstruktors in der verlinkten Liste haben wir eine Struktur zum Erstellen des Knotens verwendet. Nach dem Schließen der Struktur wird hier eine Klasse mit dem Namen Linked_List verwendet. Der private Teil enthält die Variablen eines Zeigerkopfes und eines Schwanzes. Ein normaler Konstruktor weist die Werte den Kopf- und Schwanzteilen im öffentlichen Teil zu.
Zwei Variablen vom Typ Integer-Typ akzeptieren die Werte, die aus dem Hauptprogramm gesendet werden, indem das Objekt erstellt wird. Diese Variablen werden den Kopf- und Schwanzvariablen zugeordnet, um Werte zu speichern. Nach dem normalen Konstruktor wird ein Kopierkonstruktor deklariert. Dies ist gleicherdlich. Dieser Konstruktor wird auch mit denselben Werten zugewiesen. Diese werden jedoch mit den Objekten zugegriffen. Wir erhalten diese Werte, indem wir die Funktion get () verwenden. Beide Werte in der Variablen werden zurückgegeben.
Nach dem Konstruktor wird eine einfache Funktion zum Hinzufügen eines Knotens zum vorhandenen Knoten verwendet. Ein neuer Knoten des Temperaturnamens wird erstellt. Der Datenteil wird mit dem Wert zugewiesen. Und der nächste Teil wird als Null erklärt. Hier überprüfen wir, ob der hinzugefügte Knoten die erste oder die verknüpfte Liste ist, enthält bereits einen Knoten darin. Also wird hier eine IF-ELSE-Anweisung verwendet. Es wird prüfen, ob der Kopf gleich Null ist, dann wird dem Kopf und dem Schwanz den Wert von „TMP“ zugeteilt. Wenn sie jedoch nicht null sind, wird der nächste Teil des Schwanzes mit der Adresse eines neuen Knotens zugewiesen. Es bedeutet, dass „TMP“ die Adresse des Schwanzes enthält. Und der Schwanz wird den Wert aktualisieren.
Jetzt im Hauptprogramm werden wir das Objekt der Klasse erstellen. Durch das Erstellen des Objekts werden Konstruktoren aufgerufen. Das Original und der Kopierkonstruktor enthalten die Parameterwerte. Der Kopierkonstruktor erstellt das Objekt und wird mit dem Objekt des ursprünglichen Konstruktors zugeordnet.
Diese Werte werden angezeigt. Um den resultierenden Wert zu sehen, führen Sie das Programm auf dem Terminal aus. Sie können sehen, dass beide Konstruktor die gleichen Werte haben.
Abschluss
Dieser Artikel erläutert die Arbeit und Erstellung eines Kopierkonstruktors in der verknüpften Liste mit C++. Dies geschieht durch Erläuterung des Kopierkonstruktors, seiner Typen und der Verwendung in einem einfachen Programm, das im Beispiel demonstriert ist. Darüber hinaus wird das Konzept der verknüpften Listenerstellung ebenfalls erläutert. Ein kombiniertes Beispiel einer verknüpften Liste mit dem Kopierkonstruktor wird verwendet, um jede Unklarheit des Endbenutzers zu löschen.