next up previous contents index
Nächste Seite: 8.5 Der Printoperator Aufwärts: 8. Der Datentyp Klasse Vorherige Seite: 8.3 Der Destruktor   Inhalt   Index


8.4 Der Zuweisungsoperator

Konstruktoren greifen stets auf nicht initialisierte Daten zu. Um der bereits (mit Standardwerten) initialisierten Variablen 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.


Gundolf Haase 2004-01-15