Hallo Leute,
habe ein kleines Problem bei der Überladung vom Zuweisungsoperator:
Der Destruktor sieht so aus:
Wenn ich der überladenen Methode keine Referenz (&) übergebe, dann wird der Destruktor nach dieser Methode aufgerufen. Arbeite ich hingegen mit der Referenz (&), dann wird kein Destruktor aufgerufen.
Meine Frage ist nun, warum der Destruktor aufgerufen wird, wenn ich ohne Referenz (also mit einer Kopie) arbeite?
Würde mich freuen, wenn mir jemand das Brett vorm Kopf nehmen könnte
habe ein kleines Problem bei der Überladung vom Zuweisungsoperator:
Code:
//Warum kickt er einCFeld weg, wenn man ohne & (Referenz) arbeitet?
const CFeld & CFeld::operator=(const CFeld &cf) {
int i;
dim = cf.dim;
p = new char[cf.dim];
for (i = 0; i < cf.dim; i++){
p[i] = cf.p[i];
}
cout << "Aufruf von operator=\n";
return cf;
}
Der Destruktor sieht so aus:
Code:
~CFeld() {
delete[] p;
}
Wenn ich der überladenen Methode keine Referenz (&) übergebe, dann wird der Destruktor nach dieser Methode aufgerufen. Arbeite ich hingegen mit der Referenz (&), dann wird kein Destruktor aufgerufen.
Meine Frage ist nun, warum der Destruktor aufgerufen wird, wenn ich ohne Referenz (also mit einer Kopie) arbeite?
Würde mich freuen, wenn mir jemand das Brett vorm Kopf nehmen könnte