robbi
die Daten von arni
zuzuweisen,
d.h.,
robbi = arni;
,
muß noch ein Zuweisungsoperator definiert werden, welcher sich im
wesentlichen aus den Funktionskörpern von Destruktor und
Copykonstruktor zusammensetzt.
Jedoch ist hier vorher zu überpüfen, ob die
rechte Seite der Zuweisung (übergebene Variable)
nicht identisch zur linken Seite der Zuweisung (this
) ist.
// Zuweisungsoperator Studenten& Studenten :: operator=(const Studenten & orig) { if ( &orig != this ) // test { if (pvorname != 0) delete [] pvorname; if (pname != 0) delete [] pname; matrikel = orig.matrikel; skz = orig.skz; if (orig.pname !=0 ) { pname = new char[strlen(orig.pname)+1]; strcpy(pname,orig.pname); } else { pname = 0; } if (orig.pvorname != 0) { pvorname = new char[strlen(orig.pvorname)+1]; strcpy(pvorname,orig.pvorname); } else { pvorname = 0; } } return *this; } |
Weiterführend sei hier auf den Stichpunkt
Überladen von Operatoren in der Literatur
[SK98, §16],
[Str00, $ 11]
verwiesen.