Hi Leute,
was ist denn nun der konrekte Unterschied zwischen dem Copy-Konstruktor und dem Zuweisungsoperator? Ich hab hier einen Quelltext vor mir liegen bei dem beide im Grunde dasselbe machen:
//Copy-Konstruktor
Test::Test (const Test &a) : size(a.size), p(new int[size]) {
for (int i = 0; i p[i] = a.p[i];
}
}
//Zuweisungsoperator
Test &Test ::operator=(const Test &a) {
if (this != &a) {
for (int i = 0; i p[i] = a.p[i];
}
}
return *this;
}
Beide übergeben ja dem neuen Objekt das alte Array ( p[ ] ), also kopieren es oder weisen es neu zu...wo ist der Unterschied?
(...) Der Hauptunterschied zwischen Kopierkonstruktor und Zuweisungsoperator besteht darin, dass bei einer Zuweisung das Zielobjekt bereits existiert. Das heißt, das Zielobjekt hatte vor der Zuweisung bereits einen externen Datenbereich, der über seinen Zeiger zugreifbar war. Dieser Zeiger wird aber bei einer Bit-für-Bit-Kopie durch die Zuweisung überschrieben und zeigt anschließend auf den Datenbereich des Quellobjekts (...) http://www.willemer.de/informatik/cpp/cppovrld.htm
Ja hat mir beim Verständis geholfen! Der Unterschied wird jetzt deutlicher. Danke!