Flache Kopie und Tiefe Kopie in C
Ich habe versucht, googeln dies aber nur widersprochen orientierte Sprachen pop-up als Ergebnisse.
Von meinem Verständnis eine flache Kopie ist das kopieren von bestimmten Elementen einer struct.
also sagen wir, dass ein struct ist
typedef struct node
{
char **ok;
int hi;
int yep;
struct node *next;
}node_t
kopieren char** wäre eine flache Kopie
aber kopieren Sie den gesamten Link-Liste wäre eine Tiefe Kopie?
Habe ich die richtige Idee, oder bin ich Weg? Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht. Eine flache Kopie, in diesem speziellen Zusammenhang bedeutet, dass Sie kopieren Sie die "Referenzen" (Zeiger, was auch immer) Objekte und der sicherungsspeicher der diese Referenzen oder Zeiger ist identisch, es ist die sehr gleichen Objekt an der gleichen Speicherstelle.
Einer tiefen Kopie, im Gegensatz, bedeutet, Sie kopieren ein ganzes Objekt (struct). Wenn es Mitglieder hat, die kopiert werden können flach oder tief, Sie auch bei einer tiefen Kopie von Ihnen. Betrachten Sie das folgende Beispiel:
Den copy Konstruktor initialisiert das neue Objekt mit den zuvor erstellten Objekts der gleichen Klasse. Standardmäßig compiler schrieb eine flache Kopie. Flache Kopie funktioniert, wenn die dynamische Speicherverwaltung nicht beteiligt ist, weil, wenn die dynamische Speicherverwaltung beteiligt ist, werden dann beide Objekte werden die Punkte auf die gleiche Speicherstelle im heap, Also um dieses problem zu beseitigen schrieben wir tief kopieren, so dass beide Objekte haben Ihre eigene Kopie von Attributen, die in einem Speicher. Lesen Sie die details mit Beispielen und Erklärungen konnten Sie sehen den Teil von diesem Artikel über den Unterschied zwischen Shallow und Deep copy-Konstruktoren.