003
26.07.2004, 14:56 Uhr
virtual
Sexiest Bit alive (Operator)
|
so ähnlich... Als im beefies Beispiel haben wir ja die Klassen A - D. Offenkundig enthalten die Klassen B und C jeweils auch alles von A, weil sie ja von A abgeleitet worden sind.
Losgelöst von der Syntax könnte man sich für D nun also folgende Alternativen vorstellen:
1. Ein D enthält ein B und ein C. Weil B und C jeweils ein A enthalten, enthält D also auch den A - Anteil von B sowie den A - Anteil von C.
2. Ein D enthält ein B, C und auch ein A. Dh B und C müssen sich das A teilen.
Die letztere Variante hat man, wenn man mit virtual ableitet, erstere ohne virtual.
Es muß nun jeder für sich selbst entscheiden, was er davon hält, ich persönlich finde es nicht grade ein Feature, sondern nur einen verzweifelten Versuch ein Fehldesign zu retten:
Offenkundig ist es nämlich so, daß man sich bereits bei dem Design von B und C gedanken darüber machen muß, ob man diese Klassen jemals in einer Mehrfacherbung haben möchte und wenn ja auf welche Weise. Dies ist nicht immer vorhersehbar, grade wenn es um wiederverwendbaren Code geh, und macht bei komplexeren Programmen ganz gerne mal nachhaltig Probleme. Deshalb findet man häufig in Firmeninternen Codestyleguides die Anweisung bereits in der Designphase Mehrfachvererbung soweit als möglich zu meiden... -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |