Was sind private Daten?

Beispielprogramm: VERERB2.CPP

Im Beispielprogramm VERERB2.CPP sind die Daten der Basisklasse automatisch als private deklariert, da wir Zeile 6 auskommentiert haben. In diesem Programm sind diese Daten also in abgeleiteten Klassen nicht verfügbar. Die einzige Möglichkeit, diese Daten zu verwenden, stellen dann die Methoden der Basisklasse dar, was jetzt auch für abgeleitete Klassen gilt.

Es mutet ein wenig eigenartig an, Methoden aufrufen zu müssen, um auf Daten zugreifen zu können, die eigentlich Teil der abgeleiteten Klasse sind, aber C++ ist nun einmal so definiert. Das heißt, daß Du bei jeder Klasse ein wenig darüber nachdenken solltest, wie sie verwendet wird. Wenn Du glaubst, daß jemand eine Klasse von der Deinen ableiten wird, solltest Du die Daten als protected deklarieren, damit sie in der neuen Klasse einfach verwendet werden können. Die Zeilen 86 und 87 unseres Programmes sind jetzt nicht mehr erlaubt, da die Daten nicht sichtbar sind, also übernimmt Zeile 88 die Arbeit der beiden anderen, indem sie eine public Methode der Basisklasse aufruft. Auch Zeile 104 wurde aufgrund der versteckten Daten geändert. Kompiliere das Programm und führe es aus.

(weiter...)