May 29
Si supponga di voler fare una funzione, Mult, che moltiplica due numeri. È possibile scrivere una versione separata per ogni tipo di dati, che è il metodo sovraccarico, oppure è possibile utilizzare i modelli di funzioni C ++ e hanno una firma funzione invece di tre. C ++ modelli di funzione automatizzare tipo di movimentazione, di dare all'utente biblioteca potere più espressivo e ridurre i costi di manutenzione del codice.
1 Sovraccaricare una funzione che moltiplica i numeri di tipo int, float e double:
int Mult (int a, int b) {
tornare (a
b);
}
float Mult (float a, float b) {
tornare (a b);
}
doppia Mult (doppia una, doppia b) {
ritorno (a * b);
}
2 Fate la stessa cosa che passo 1 fa, utilizzando C ++ template di funzione:
template <class T>
T Mult (T a, T b) {
ritorno (a * b);
}
3 Confronta punto 2 al punto 1. La linea extra di codice introdotto sopra la definizione della funzione al punto 2 sembra un buon compromesso per ripetere il corpo della funzione due o più volte.
4 Ritorno al codice della Fase 2. T è il typename. La parola chiave di classe significa che T può prendere qualsiasi identità. È un tipo generico che il compilatore interpreta al volo seconda quale parametro l'utente passa ad esso. Quindi T può essere un numero intero, un float, una doppia o una classe che ha l'operatore definito più volte; altrimenti l'operazione di moltiplicazione rimane indefinito.
5 Prova a fondo la firma funzione che utilizza i modelli. Eseguire test con tutti i tipi di dati previsti per garantire che non si ottiene risultati inaspettati.