Wie implementiere ich den Kopierkonstruktor in C ++?



Konstruktoren zu verstehen war für viele ein Rätsel. Dieser Artikel hilft Ihnen dabei, das Konzept des Kopierkonstruktors in C ++ zu entmystifizieren

Verstehen Konstruktoren war für viele ein Rätsel. Dieser Artikel hilft Ihnen dabei, das Konzept des Kopierkonstruktors in C ++ zu entmystifizieren. Die folgenden Hinweise werden in diesem Artikel behandelt:

Also fangen wir anmit diesem Artikel über Copy Constructor in C ++





Ein Kopierkonstruktor ist ein Konstruktor, der ein Objekt einer Klasse mit einem anderen Objekt derselben Klasse initialisiert.

Syntax:



Wir haben das Schlüsselwort const, weil wir den Wert konstant halten und sicherstellen möchten, dass er nicht irgendwo im Code geändert wird. Wie ein Standardkonstruktor wird auch ein Kopierkonstruktor vom Compiler bereitgestellt. Dies wird als Standardkopiekonstruktor bezeichnet. Kopierkonstruktoren können privat gemacht werden. Wir können die Objekte der Klasse nicht kopieren, wenn wir den Kopierkonstruktor privat machen.

Hier ist ein Beispielcode ::

#include using namespace std class test {privat: int x öffentlich: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Hier wird der normale Konstruktor aufgerufen. test t2 = t1 // Der Kopierkonstruktor wird hier cout genannt<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Ausgabe:



Standardwert für char in Java

Ausgabekopierkonstruktor in C ++ - Edureka

Erläuterung

Das obige Programm ist eine grundlegende Demo eines Kopierkonstruktors. Wir haben einen Klassentest mit einem privaten Datenelement vom Typ int namens x. Dann haben wir einen parametrisierten Konstruktor, der den Variablen x 7 zuweist. Wir haben einen Kopierkonstruktor, der den Wert von t2 mit dem Wert von t1 instanziiert. Die Adresse von t2 wird gesendet, die den Wert von t1 enthält und x zugewiesen ist. Es gibt eine get-Funktion, die den Wert von x zurückgibt.

Die Hauptfunktion hat ein Objekt des Klassentests namens t1. Diesem Objekt ist ein Wert zugeordnet. Dies ist ein Parameter. Die Hauptfunktion hat ein anderes Objekt des Klassentests namens t2. Dies wird mit der Variablen t1 initialisiert und der Kopierkonstruktor wird hier aufgerufen. Zuletzt wird die Funktion get in Bezug auf t1 und t2 aufgerufen, um den Wert von x zu erhalten.

Typen

Es gibt zwei Arten des Kopierkonstruktors.
⦁ Konstruktor für flache Kopien
⦁ Deep Copy-Konstruktor

Fahren Sie mit diesem Artikel über Copy Constructor in C ++ fort

Konstruktor für flache Kopien:

Ein Shallow Copy-Konstruktor ist ein Standard-Kopierkonstruktor.

Beispiel:

Zwei Personen greifen gleichzeitig auf eine Datenbank zu und nehmen über zwei verschiedene Systeme Änderungen an den Werten vor. Wenn sie Änderungen an der Datenbank vornehmen, werden diese beiden Änderungen in der Datenbank angezeigt. Beide Objekte zeigen auf denselben Speicherort. Dies ist der Shallow Copy Constructor. Dies geschieht meistens, wenn wir mit dem Standardkopierkonstruktor arbeiten. Hier ist ein Beispielcode für: Shallow Copy Constructor:

Im String-Konstanten-Pool gibt es keine zwei String-Objekte mit demselben Inhalt.
#include using Namespace Standardklassentest {public: int y, z test (int y1, int z1) {y = y1 z = z1}} int main () {test a (7,13) cout<<'the sum is: '<< a.y+a.z return 1 } 

Ausgabe:

Erläuterung:

Im obigen Code verwenden wir einen vom Compiler bereitgestellten Standardkopierkonstruktor. Daher ist es ein Shallow Copy-Konstruktor.

Fahren Sie mit diesem Artikel über Copy Constructor in C ++ fort

Deep Copy Konstruktor

Deep Copy Constructor ist ein benutzerdefinierter Kopierkonstruktor.
Beispielsweise:
Wenn zwei Personen eine Präsentation halten müssen und beide aus derselben Quelle kopieren, sind die Kopien getrennt. Wenn Sie also Änderungen vornehmen, ist nur die andere Kopie nicht betroffen. Dies ist Deep Copy Constructor. Beide Objekte zeigen auf unterschiedliche Speicherorte, und die Änderungen an einem Objekt haben keine Auswirkungen auf das andere. Der Speicher wird dynamisch zugewiesen.

Hier ist ein Beispielcode für: Deep Copy Constructor:

#include using namespace std class test {privat: int x öffentlich: test (int x1) {x = x1} test (const test & t2) {x = t2.x} int getX () {return x}} int main () {test t1 (7) // Hier wird der normale Konstruktor aufgerufen. test t2 = t1 // Der Kopierkonstruktor wird hier cout genannt<< 't1.x = ' << t1.getX() cout << 'nt2.x = ' << t2.getX() return 0 } 

Ausgabe:

Java konvertiert Double in Integer

Erläuterung

Dies ist derselbe Code, den wir oben verwendet haben und der eine ähnliche Ausgabe liefert. Es ist ein benutzerdefinierter Kopierkonstruktor und daher ein Deep Copy-Konstruktor.

Damit sind wir am Ende dieses Artikels über 'Copy Constructor in C ++' angelangt. Wenn Sie mehr erfahren möchten, lesen Sie die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen. Der Java J2EE- und SOA-Schulungs- und Zertifizierungskurs von Edureka wurde entwickelt, um Sie für Kern- und fortgeschrittene Java-Konzepte sowie für verschiedene Java-Frameworks wie Hibernate & Spring zu schulen.

Hast du eine Frage an uns? Bitte erwähne es im Kommentarbereich dieses Blogs und wir werden uns so schnell wie möglich bei dir melden.