C++ bietet entgegen veleier anderer Programmiersprachen
die
Möglichkeit, auch Operatoren wie
Erzeugen wir eine schön zu verwendende 2D-Vektorenklasse:
{
Coord x, y;
CVertex()
{ x = y = Coord(0); }
CVertex(Coord initX, Coord initY)
{ x = initX; y = initY; }
CVertex
{
CVertex
{ return CVertex(x - v.x, y - v.y); }
CVertex
{
};
Zuerst deklarieren wir float als Typen für
unsere Koordinaten, den wir bei Bedarf z.B. in einen
Es lassen sich auch außerhalb der Klasse Operatoren überladen, z.B. der <<-Operator zur Ausgabe eines Vektors:
ostream&
{
}
Sehen wir uns an, wie schön wir in der
{
CVertex x(1, 1);
CVertex y(1, 2);
CVertex z = y - x;
CVertex w = (x + y) * Coord(0.5);
cout << x << endl;
cout << y << endl;
cout << z << endl;
cout << w << endl;
}
In unserer Klasse sind alle Attribute öffentlich. Hätten wir geschützte Attribute, könnten wir in der Überladung des <<-Operators gar nichts ausgeben, da wir auf diese Attribute nicht zugreifen dürften.
Um einer externen Klasse oder Methode Zugriff auf die
geschützten und privaten Elemente der Klasse zu geben, existiert das
Verwendet dieses Schlüsselwort nur in seltenen Fällen und dann mit Bedacht. Information hiding: Haltet so viel geschützt wie möglich und gebt nur so viel nach außen wie nötig...
- Deklariere die Koordinaten als geschützt und versuche das Programm zu kompilieren. Kommentiere danach die Zeile mit dem friend-Schlüsselwort aus und probiere es erneut.
- Programmiere eine Division durch einen Skalar (also eine Zahl)