Ich habe einige Fragen über das Konzept der statischen Polymorphismus Ich höre etwas über; Sie können sie hauptsächlich im Kontext von C++ interpretieren, aber ich würde auch sprachunabhängige Antworten (, daher sowohl C++ als auch sprachunabhängig) zu schätzen wissen.Statische Polymorphie Definition und Implementierung
Wie wir statischen Polymorphismus im Allgemeinen definieren? Als Beispiel glaube ich, dass die
std::sort
-Funktion von C++ als statisch polymorph betrachtet werden sollte, da sie von einer Schnittstelle abhängt, die von einigen Objekten wie Iteratoren und genaues Verhalten unter der Schnittstelle der bereitgestellten Iteratoren bestimmt werden kann in der Kompilierzeit. Ist diese Erklärung, wie wir statischen Polymorphismus definieren, oder ist es nur eine Beschreibung eines bestimmten Falles und es gibt noch mehr?Was sind die gemeinsamen Codemuster der Verwendung von statischen Polymorphismus in C++? Außerdem: Wird SP nur über Vorlagen in C++ erreicht?
Ist es wahr, dass ein UML-Klasse gegeben Diagramm nicht direkt beschreibt, wie Polymorphismus behandelt wird und somit kann es zumindest teilweise umgesetzt entweder statisch oder dynamisch sein? Mit anderen Worten: Ist die Wahl zwischen statischem und dynamischem Polymorphismus unabhängig vom OOP-Modell und somit bis zum Implementierer zu entscheiden?
Ist der statische Polymorphismus nur C++ - spezifisch und damit verwandt, wie Vorlagen funktionieren? Wenn nicht, ist es in anderen Mainstream-Sprachen neben C++ vorhanden? Können wir ein Äquivalent statischen Polymorphismus in Java haben, C# .. irgendetwas, und bringt es irgendwelche Vorteile?
Die wichtigsten ... Was sind die tatsächlichen Vorteile der Verwendung von statischen Polymorphie? Ich denke, wir können zustimmen, dass es Code-Flexibilität reduziert; Was sind die Vorteile, außer - im Fall von C++ - Speichern einer Zeigerdereferenz (virtuelle Funktion/Zeiger-zur-Funktion/Delegiertenkosten)? Was ist die Klasse von Problemen wo statische Polymorphie ist besonders nützlich, die richtige Wahl für die Implementierung?
Wir können zustimmen, dass es Code-Flexibilität reduziert ?? –
Ich denke, er meinte "Komplexität" oder möglicherweise "Redundanz". –
Nein, ich meinte Flexibilität; unter der Annahme, dass alle Designs mit statischem Polymorphismus mit dynamischem Polymorphismus implementiert werden können, aber nicht umgekehrt - die Verwendung von statischem Polymorphismus für einen bestimmten Fall impliziert, dass in Zukunft ein Bedarf besteht, es dynamisch neu zu schreiben, wenn sich die Anforderungen ändern. Nur mein Denken – Kos