Der Copy-Konstruktor in C ++




Copy-Konstruktor in C ++,  c ++ Kopierkonstruktor, C ++ Programmierung für AnfängerWenn Anfänger lernen Programmierung, Das erste, was, wenn man bedenkt, ein neues Thema, stellt sich die Frage – was erfordert, die eine oder andere “Sache” Was ist heute zu lernen. Antwort sofort diese Frage: “Warum brauchen wir Kopierkonstruktors?”.

Der Copy-Konstruktor erforderlich für, so dass wir schaffen können “real” (nicht pobytovыe) Kopieren Sie die Objektklasse. Diese Kopie des Objekts kann in den folgenden Fällen erforderlich sein:

  • wenn ein Klassenobjekt der Übertragungsfunktion, als Parameter Bedeutung (anstelle der Verbindung);
  • wenn sie von der Klasse des Objekts Funktion Rückkehr, als Ergebnis ihrer Arbeit;
  • wenn sie von einem anderen Objekt dieser Klasse eine Klasse Objekt initialisiert.

Wenn ein Objekt für die Funktion als Parameter übergeben Bedeutung, Diese Funktion beginnt mit ihm ein Stück für Stück Kopie zu arbeiten, und nicht mit den Bereichen des Objekts,. Lassen Sie bestimmt und Destruktor. Der erste Speicher zugewiesen, und die zweite es veröffentlicht. Während des Betriebs Funktion, Bit für Bit Kopie der Objektzeiger zeigt auf eine Speicheradresse, wo das ursprüngliche Objekt. während, wenn die Austrittsarbeit ist abgeschlossen – entfernt und bitweise Kopie des Objekts. Auf seiner Entfernung ist erforderlich, um eine bestimmte Arbeit und destructor gibt den Speicher, dass durch das ursprüngliche Objekt besetzt,. Das Programm wird weiterhin, und Shutdown, destructor Arbeit wieder, versuchen, alle die gleiche Speichersegment zu befreien. Dadurch wird das Programm Fehler verursachen.

die Verwendung von Kopierkonstruktors – eine gute Möglichkeit, um diese Fehler und Probleme zu bekommen. Er wird “real” Objektkopie, die einen privaten Bereich der Halde haben.

Der Copy-Konstruktor Die Syntax ist wie folgt:

Lassen Sie uns die folgende einfache untersuchen, aber ein sehr gutes Beispiel. Darin werden wir alle ansprechen 3 in diesem Fall ist es wünschenswert, zu verwenden Kopierkonstruktors. die Klasse wird erstellt, die kein Argument Konstruktor, Kopierkonstruktors und destructor. Zum Beispiel war es nicht zu sperrig, Der Konstruktor und Destruktor wird den Nachrichtentyp anzeigen “Auslösende Designer”, “Auslösende dektruktor”… Zuteil und freier Speicher wird nicht. Wir werden perfekt zu sehen, wie oft und wie viele Designer funktioniert wieder destructor. offensichtlich, destructor (wenn er befreit Speicher) sollte nicht mehr mal auslösen, als Designer, Zuordnen Speicher.

Beispiel:

No-Argument Konstruktor wird bei der Erstellung neuer Anlagen genannt Klasse. Der Copy-Konstruktor – bei der Erstellung von Kopien eines Objekts. Der Destruktor ausgelöst wird, wenn das Entfernen und reales Objekt und seine Kopien. In allen Funktionen des Körpers im Detail beschrieben und erfordert keine zusätzlichen Kommentare.

Die Ausführung des Programms wird folgendes in der Konsole sehen:

Copy-Konstruktor in C ++,  c ++ Kopierkonstruktor,  Programmieren in C ++ von Grund auf neu

Mal sehen, welches Programm auf der Konsole erzeugt. Block 1 – beim Erstellen eines neuen Objekts, laden Konstruktor ohne Argumente. das Block 2 wir haben die Funktion platziert showFunc(). Während der Übertragung darin “Objektparameter” Bedeutung, Last Kopierkonstruktors und erstellen “real” eine Kopie der Objektklasse Eine Klasse. Wenn Sie diese Funktion verlassen, Last destructor, wie die Kopie des Objekts wird zerstört. übrigens, die, dass die Übertragung des Objektes als Parameter sinnvoll, bewirkt, dass der Copykonstruktor, Es ist eine ausgezeichnete Gelegenheit für die Übertragungsverbindung Objekt. Dadurch wird Zeit und Speicherplatz sparen.

das Block 3 Features verfügbar returnObjectFunc(). Wie in ihrem Körper geschrieben, um ein neues Objekt der Klasse zu erstellen Eine Klasse – erste Last Konstruktorparameter. Als nächstes wird der Funktionscode ausgeführt, und während der Rückkehr des Objekts in der Hauptfunktion Main, Last Kopierkonstruktors. Am Ende, wie es sein sollte, destructor arbeitete zweimal: Objekt und seine echte Kopie.

das vierten Block, bei der Deklaration und Initialisierung eines neuen Objekts object2, Last Kopierkonstruktors. Zum Abschluss des destructor Programms arbeitete für eine Kopie des Objekts aus dem vierten Block und Objekt object1 von dem ersten Block.

Wenn wir auf Kommentar /*Kopierkonstruktors * / im Unterricht und das Programm erneut – sehen, dass der Konstruktor ohne Parameter Arbeit 2 falten, und destructor – Es läuft für fünf Mal.

Copy-Konstruktor in C ++,  c ++ Kopierkonstruktor, Programmieren in C ++ von Grund auf neu

In dieser Situation, Wenn der destructor den Speicher freigibt - zu einem Fehler in dem Programm.

Ich empfehle Thema lesen Der Copy-Konstruktor in dem Buch von Stephen Prata “Die Programmiersprache C ++. Vorlesungen und Seminare. 6-Ausgabe.” Sie zeigte eine viel tiefer und enthält alle grundlegenden Nuancen der Verwendung des Copykonstruktor. Der Artikel beschreibt den Zuweisungsoperator =.

Zur Unterstützung unserer Website – klicken Sie auf das Sparschwein und wählen Sie eine beliebige bequeme Weise.

Newsletter neue Lektionen über die Programmierung:

Der Copy-Konstruktor in C ++
5 (100%) 2 Stimmen

6 Gedanken zu "Der Copy-Konstruktor in C ++

  1. Und warum im Code definiert, nicht verwendeter Zeiger?

    1. Da zumindest einige variable, Mitglied der Klasse, Es muss in der Klasse definiert werden?
      Wenn Sie nicht wie ein Zeiger, eine Variable des Typs int definieren.

  2. Im dritten Block wird Copykonstruktor nicht verursacht, bzw., und ist die zweite nicht destructor. Dies ist für MinGW Compiler, Klirren(Online-Compiler ). Für Microsoft vc ++ alle Arbeiten, wie in Beispiel.

    1. Da gibt es wirklich Nein Objekt, in denen müssen Sie ein Ergebnis zurück.
      Sie müssen so etwas aufzeichnen:

      so:

Hinterlasse eine Antwort

Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *