Eine tiefe Kopie schreiben - den Zeiger kopieren

8

Beim Schreiben eines Kopierkonstruktors für eine Klasse, die einen Zeiger auf dynamisch zugewiesenen Speicher enthält, habe ich eine Frage.

Wie kann ich angeben, dass der Wert des Zeigers des kopierten from-Objekts in den Zeiger des kopierten to object kopiert werden soll. Offensichtlich funktioniert so etwas nicht ...

%Vor%

weil das Balkenobjekt gelöscht wird (der Zweck des Kopierens des Objekts an erster Stelle), und dies hat nur den foo Punkt des Objekts an den gleichen Ort kopiert.

Was ist die Lösung hier? Wie kann ich den Wert des dynamisch zugewiesenen Speichers übernehmen und an eine andere Adresse kopieren?

    
Anonymous 20.12.2009, 20:35
quelle

3 Antworten

18

Sie vergeben neues Objekt

%Vor%     
Nikola Smiljanić 20.12.2009, 20:40
quelle
2

Ich gehe davon aus, dass deine Klasse so aussieht.

%Vor%

Um eine tiefe Kopie zu erstellen, müssen Sie eine Kopie des Objekts erstellen, auf das "bar.foo" verweist. In C ++ tun Sie dies, indem Sie den Operator new verwenden, um den Kopierkonstruktor der Klasse Foo aufzurufen:

%Vor%

Hinweis: Diese Lösung delegiert die Entscheidung, ob der Kopierkonstruktor new Foo (constFoo & amp;) auch eine 'deep copy' zur Implementierung der Foo-Klasse ausführt ... der Einfachheit halber nehmen wir an es macht das "Richtige"!

[Anmerkung ... die Frage, wie geschrieben, ist sehr verwirrend - sie fragt nach dem 'Wert des Zeigers des kopierten von Objekt', der für mich nicht wie eine tiefe Kopie klingt: das klingt wie eine flache Kopie, dh das.

%Vor%

Ich nehme an, das ist nur unschuldige Verwirrung seitens des Fragestellers, und eine tiefe Kopie ist, was gewollt ist.]

    
Tim Lovell-Smith 20.12.2009 20:53
quelle
1

Ich sehe den Kontext nicht, aber der Code, den Sie gepostet haben, scheint nicht so zu sein, als würde er den Zeiger kopieren, es ist genau das, wonach Sie fragen - Kopieren, worauf auch immer es zeigt. Vorausgesetzt, dass foo auf das zugewiesene Objekt zeigt.

    
Michael Krelin - hacker 20.12.2009 20:37
quelle

Tags und Links