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?
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:
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.]
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.