
Hier kennzeichnet sich auch der wichtigste Unterschied zwischen Template und Polymorphismus ab. Templates bleiben vollständig typisiert zur Compile-Zeit.
Außerdem ist mir in diesem Zusammenhang mit Hilfe von Claudius aufgefallen, dass der Polymorphismus ein Werkzeug zur untypisierten Programmierung ist. In diesem Sinne ist daher der dynamic_cast eine Wiederherstellung der typisierten Programmierung. So ermöglicht C++ eine erstrebenswerte Freiheit der Programmierung mit spezifischen und unspezifischen Typen. Dies Variationsmöglichkeit sollte/ist die optimale Lösung in der Frage Pro/Contra un-/spezifischen Datentypen. Jetzt liegt es nur noch am Programmierer sich einen unspezifischen Datentyp mit Hilfe des Polymorphismus zu erstellen. Man denke dabei einfach an den + Operator, welchen es schon bei Strings und bei Floats gibt. Wir nehmen dann das Werkzeug des Polymorphismus und erstellen uns ein Objekt, welches String und Float intern verwaltet und schreiben noch einen entsprechenden + und = Operator für diese verwaltende Objekt. Schon haben wir das Objekt, welchem sowohl Strings als auch Floats zugewiesen werden könne.
Ist PHP nicht eigenlich mit einer typisierten Programmiersprache geschrieben worden?
==> Resumee / Regel
der beiden Fragen "Warum Templates vs. Polymorphismus?" und "Warum dynamic_cast?"Verwende Templates bei Algorithmen, welche um eine Funktionalität erweitert werden oder mit unterschiedlichen Datentypen arbeiten sollen.
Verwende Polymorphismus, wenn das OOP Paradigma bestehen bleibt. D.h. die Daten und der Algorithmus nicht getrennt werden. Die Algorithmen sind dann nur spezifisch für diese Daten.
(Nebenbei: die Frage der Responsibility bleibt unverändert. Die Objekte sind für das Laden und Löschen der Daten aus dem Speicher verantwortlich.)
--
Grüße