Bedenke: Ein Zeiger ist auch nur ein Objekt, er hält einen Wert - die Adresse des Objektes, auf das er zeigt. Wie ein normales "int" lässt sich auch so eine Zeiger-Objekt kopieren. Der Wert bleibt dabei der selbe (wird ja kopiert) allerings habe ich nach der Kopie ZWEI Objekte.
Ein kleines Beispiel, damit du das vllt. besser verstehst:
Code: Alles auswählen
#include <iostream>
using namespace std;
int main() {
{
int a=10;
int b=a;
cout << a << " " << b << endl;
}
{
int *a = new int(10);
int *b = a;
cout << "Objekt-Wert " << *a << " " << *b << endl;
cout << "Zeiger-Wert " << a << " " << b << endl;
cout << "Zeiger-dressen " << &a << " " << &b << endl;
}
}
Damit sollte auch klar sein, warum in deinem Code eine Zeiger-Kopie eben gerade NICHT ausreicht: Du willst ein neues Objekt erstellen, dabei soll der übergebene Zeiger auf das neue Objekt zeigen. Wäre der Zeiger nur eine Kopie, bliebe der ursprüngliche Zeiger unverändert und würde irgendwo hinzeigen (wo er auch schon vorher hingezeigt hat).