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;
}
};