Ho alcune domande sul concetto di polimorfismo statico Qualche volta ho sentito parlare; puoi interpretarli principalmente nel contesto del C++, ma apprezzerei le risposte indipendenti dal linguaggio, laddove applicabile (quindi taggando sia C++ che agnostico della lingua).Definizione e implementazione del polimorfismo statico
Come possiamo definire polimorfismo statico in generale? Come esempio, ritengo che la funzione
std::sort
da C++ è considerato staticamente polimorfico in quanto dipende da alcuni interfaccia fornita da alcuni oggetti che comportano come iteratori, e il comportamento esatto sotto l'interfaccia forniti iteratori può essere determinato nel tempo di compilazione. Questa spiegazione spiega come definiamo il polimorfismo statico, o è solo una descrizione di un caso specifico e c'è dell'altro?Quali sono i pattern di codice comuni dell'utilizzo del polimorfismo statico in C++? Inoltre: SP è il solo raggiunto tramite modelli in C++?
È vero che una determinata classe diagramma UML non si direttamente descrivere come il polimorfismo è gestito e, quindi, può essere almeno parzialmente assolti o statico o dinamico? In altre parole: la scelta del polimorfismo statico o dinamico è indipendente dal modello OOP, e quindi fino a che l'implementatore decide?
Il polimorfismo statico è solo C++ - specifico e relativo al funzionamento dei modelli? In caso contrario, è presente in altre lingue tradizionali oltre al C++? Possiamo avere un equivalente di polimorfismo statico in Java, C# .. qualcosa, e porterà qualche vantaggio?
Il più importante ... Quali sono i vantaggi effettivi dell'utilizzo del polimorfismo statico? Penso che possiamo essere d'accordo sul fatto che riduce la flessibilità del codice; quali sono i vantaggi, inoltre - nel caso del C++ - salvando un puntatore di riferimento (funzione virtuale/puntatore-a-funzione/costo del delegato)? Qual è la classe di problemi in cui il polimorfismo statico è particolarmente utile, la scelta giusta per l'implementazione?
Possiamo convenire che riduce la flessibilità del codice ?? –
Penso che intendesse "complessità" o forse "ridondanza". –
No, intendevo la flessibilità; partendo dal presupposto che tutti i progetti con polimorfismo statico possono essere implementati con polimorfismo dinamico, ma non nel contrario, l'utilizzo di polimorfismo statico per un caso specifico implica che in futuro potrebbe sorgere la necessità di riscriverlo in modo dinamico, se i requisiti cambiano. Solo il mio modo di pensare è – Kos