Der Copy-Konstruktor in C ++




Copy-Konstruktor in C ++,  c ++ Kopierkonstruktor, C ++ Programmierung für AnfängerWenn Anfänger lernen Programmierung, Das erste, was, при рассмотрении новой темы, 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, как параметра Bedeutung (anstelle der Verbindung);
  • wenn sie von der Klasse des Objekts Funktion Rückkehr, как результата её работы;
  • при инициализации одного объекта класса другим объектом этого класса.

При передаче объекта в функцию как параметра 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 – удаляется и побитовая копия объекта. 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, которая будет иметь личную область динамической памяти.

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”… Выделять и освобождать память не будем. 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:

Конструктор без параметров будет вызываться во время создания новых объектов Klasse. Der Copy-Konstruktor – bei der Erstellung von Kopien eines Objekts. Деструктор срабатывает при удалении и реального объекта и его копии. В теле функций все описано подробно и не требует дополнительных комментариев.

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во время создания нового объекта, laden Konstruktor ohne Argumente. das Block 2 мы разместили функцию showFunc(). Während der Übertragung darin “Objektparameter” Bedeutung, Last Kopierkonstruktors und erstellen “real” копия объекта класса Eine Klasse. При выходе из этой функции сработал деструктор, так как копия объекта уничтожается. übrigens, die, что передача объекта как параметра по значению, вызывает конструктор копирования, служит отличным поводом для передачи объекта по ссылке. Это сэкономит и время и память.

das Block 3 размещена функция returnObjectFunc(). Wie in ihrem Körper geschrieben, um ein neues Objekt der Klasse zu erstellen Eine Klasse сначала сработал конструктор без параметров. Als nächstes wird der Funktionscode ausgeführt, und während der Rückkehr des Objekts in der Hauptfunktion Main, Last Kopierkonstruktors. В конце, 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. При завершении работы программы деструктор сработал для копии объекта из четвертого блока и для объекта object1 von dem ersten Block.

Если же мы закомментируем /*Kopierkonstruktors * / im Unterricht und das Programm erneut – sehen, что конструктор без параметров сработает 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

В этой ситуации, если бы деструктор освобождал память — в программе возникла бы ошибка.

Ich empfehle Thema lesen Der Copy-Konstruktor in dem Buch von Stephen Prata “Die Programmiersprache C ++. Vorlesungen und Seminare. 6-Ausgabe.” Она раскрыта намного глубже и включает все основные нюансы использования конструктора копирования. 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:


Ich bin damit einverstanden, Nachrichten zu empfangen von purecodecpp.com auf meine E-Mail

Datum
Seite
Der Copy-Konstruktor in C ++
Wertung
5

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

  1. А почему в коде определен, неиспользуемый указатель?

    1. Потому что хоть какая-то переменная, член класса, должна быть определена в классе?
      Если вам не нравится указатель, определите переменную типа int.

Hinterlasse eine Antwort

Platz Code in Tags: <pre class="lang:c ++ dekodieren:true ">DEIN CODE</Vor>