Vererbung

Eine Grundeigenschaft der Objektorientierung ist, dass man die Eigenschaften eines Objektes auf ein neues vererben kann. Damit entstehen aber auch Elternklassen, welche die Gemeinsamen Eigenschaften ihrer Kindklassen vereinen. Ein beliebtes Beispiel ist hierbei eine Hierarchie für Fahrzeuge, wo eine Fahrzeugklasse sich in Kindklassen Auto, Motorrad oder Flugzeug aufteilt. Im obigen Beispiel könnte man eine generelle Tankklasse schreiben, welche den Mechanismus von hinzufügen und wegnehmen aus einem Behältnis implementiert, davon würden sich dann evtl. Wassertank, GasTank oder Benzintank ableiten, welche jeweils noch entsprechend für ihre Anwendungen Schnittstellen hinzufügen. So hat ein GasTank evtl. noch eine Druckanzeige, während die BenzinTank Klasse die verbleibenden Kilometer, welche man mit dem Tankinhalt fahren kann, kalkulieren kann.

In einigen anderen Sprachen gibt es Interfaces, gegen die man seine Klasse implementieren kann, in C++ gibt es dafür kein spezielles Sprachkonstrukt, man sieht ein Interface jedoch als eine Klasse welche nur virtuelle - also für die abgeleiteten Klassen überladbare - Methoden hat. Auch ist es in C++ möglich, eine Klasse von mehreren Elternklassen abzuleiten. Generell hilfreich bei der Entscheidung, ob man eine Klasse von einer anderen Ableiten sollte, ist die Faustregel, dass eine Ableitung immer eine „ist ein“ Verbindung zwischen der Eltern und der Kindklasse ist. Während „hat ein“ als Member in der Klasse implementiert werden sollte.