003
27.12.2009, 19:09 Uhr
0xdeadbeef
Gott (Operator)
|
Naja, deine Basisklasse hat nur einen virtuellen Destruktor; sie stellt keinerlei Funktionalität in Aussicht. Das bedeutet, die Basisklasse stellt keinerlei Anforderungen an abgeleitete Klassen, und dementsprechend kannst du mit einem Zeiger auf die Basisklasse auch nur genau das einfordern - nichts.
Sauberes, objektorientiertes Design erwartet, dass die Basisklasse das Interface zur Verfügung stellt, das alle abgeleiteten Klassen dann erfüllen müssen. Auf die Art lässt sich jede Instanz einer abgeleiteten Klasse in einen Basisklassenzeiger bzw. -referenz stopfen und trotzdem sinnvoll benutzen, und darum geht es ja bei der ganzen Geschichte.
Es ist zwar prinzipiell möglich, über RTTI die abgeleitete Klasse zurückzufordern, wenn du weißt, was sich hinter dem Zeiger verbirgt, aber das ist ein wirklich, wirklich, wirklich, wirklich, wirklich dreckiger Hack, der noch vorsichtiger benutzt werden sollte als goto o.ä. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |