Iterator : ConstIterator
-
Ich überlege gerade darüber ob es Sinn macht Iterator von ConstIterator abzuleiten. Man müsste ja nur in der Iterator-Klasse die Methoden für non-const implementieren. Andererseits entpsticht es nicht gerade einer "ist-ein"-Beziehung.
Gruß
-
Hallo,
es macht sinn, aber nur aus Implementationssicht (weniger Code-Duplikation).
Die Beziehung sollte aber lediglich als Implementationsdetail angesehen und nicht außerhalb der Implementation verwendet werden. Iteratoren sind keine polymorphen Klassen. Aus Sicht des Benutzers ist eine Vererbungsbeziehung deshalb uninteressant.Ein anderes Beispiel für eine solche Art der Vererbung sieht man bei Funktionsobjekten, die von std::unary_function (bzw. std::binary_function) erben. Auch hier steht nicht die "ist-ein"-Beziehung im Vordergrund (das Funktionsobjekt und die Basisklasse sind in Ermangelung von virtuellen Funktionen nicht austauschbar) sondern lediglich die Wiederverwendung des Basisklassencodes (in diesem Fall der typedefs).