next up previous contents index
Next: Zugriff auf Basisklassen Up: Klassen-Hierarchien und Vererbung Previous: Ein erstes Beispiel

Zugriff auf Basisklassen-Elemente

  Klassenelemente sind public (default für struct), protected oder private (default für class):

    class base
    {   int privelem;   // privat
      protected:
        int protelem;   // protected
      public:
        int pubelem;    // public
      ...
    };
     

Außerhalb der Klasse können die public Elemente benutzt werden:

    void set(base *b)
    { b->pubelem=0;
    }

Innerhalb der Klasse und von Freunden können alle Elemente benutzt werden:

    int base::getpriv()
    { return privelem;
    }

In abgeleiteten Klassen können die protected und die public Elemente benutzt werden (natürlich nicht die private Elemente):  

     class base
     {private:   int privelem;   // privat
      protected: int protelem;   // protected
      public:    int pubelem;    // public
     };
     class derived : public base
     { private:  int derivedelem;
       public:   derived() 
                 { derivedelem=pubelem+protelem;}
     };

Beispiel:

class name
{    char *vorname;
     char *nachname;
  protected:
     char *ganzername;
  public:
     name(char*, char*)   // Konstruktor
};

name::name(char* v, char* n)
{ vorname=new char[strlen(v)+1];
  nachname=new char[strlen(n)+1];
  strcpy(vorname,v); strcpy(nachname,n);
  int len = strlen(n) + strlen(v)+2;
  ganzername=new char[len];
  ostrstream os(ganzername,len);
  os << v << ' ' << n;
}

class address : public name
{    char *str;
     char *ort;
  public:
     address(char *v, char *n, char *s, char *o) 
     : name(v,n)
     { str=new char[strlen(s)+1];
       ort=new char[strlen(o)+1];
       strcpy(str,s); strcpy(ort,o);
     }
     void printname()
     { cout << ganzername;
     } 
};


next up previous contents index
Next: Zugriff auf Basisklassen Up: Klassen-Hierarchien und Vererbung Previous: Ein erstes Beispiel

Peter Pfahler, 1997