Default-Konstruktor
-
Hallo
ich habe in Stroustrup folgendes gelesen:Tabelle& Tabelle::operator = (const Tabelle& t) //zuweisungsoperator { if ( this != &t) { //vorsicht selbstzuweisung delete[] p; p = new Name[gr=t.gr]; for (int i=0; i<gr; i++) p[i] 0 t.p[i]; } return *this; }
Nun meine Fragen:
+ worauf bezíeht sich und was bedeutet "operator" ?
+ worauf zeigt this in der 2. Zeile?
+ was will er mit delete überhaupt löschen?
Danke!
-
Wenn du 2 Tabellen hast: die Eine leer, da mit Standard-Konstrruktor erzeugt; die Andere voll und jetzt die Volle der Leeren zuweisen willst (also praktisch kopieren), dann egschieht das durch den Zuweisungsoperator "="
Und weil es mMist ist, sowas wie: Tabelle1 = Tabelle1 zu machen, wird geprüft, dass man nicht versucht, dass man die Tabelle sihc selbst zuweist.
Der this-Zeiger bezieht sich folglich auf die Tabelle, die den Operator "=" verwendet.
Bei einer Zuweisung muss man den Speicher, den das Element, dem man was zuweisen will ( Tabelle1) auch freigben, deswegen das delete[] p, weilman ja nicht davon ausgehen kann, das die erste Tabelle bereits leer ist