Si supponga di che voler fare una funzione, Mult, che moltiplica due numeri. È possibile scrivere una versione separata per ogni tipo di dati, che è il metodo di overload, o è possibile utilizzare modelli di funzione C++ e hanno una funzione firma invece di tre. Modelli di funzione C++ automatizzare tipo consegna, dare all'utente della libreria più espressivo di potenza e ridurre i costi di manutenzione del codice.
Istruzioni
1
Sovraccarico di una funzione che moltiplica un numero di tipo int, float e double:
int Mult (int a, int b) {
ritorno (un b);
} galleggiare Mult (float a, b di galleggiante) { ritorno (un
}
doppia Mult (doppia a, double b) {
ritorno (a * b);
}
2
Fare la stessa cosa che fa di passaggio 1, utilizzando modelli di funzione C++:
modello < classe T >
T Mult (T a, T, b) {
ritorno (a * b);
}
3
Confrontare il passaggio 2 per il passaggio 1. La linea aggiuntiva del codice inserito sopra la definizione di funzione nel passaggio 2 mi sembra un buon compromesso per ripetere il corpo della funzione due o più volte.
4
Tornare al codice del passaggio 2. T è la proprietà typename. La parola chiave class significa che T può prendere qualsiasi identità. Si tratta di un tipo generico che il compilatore interpreta al volo a seconda di quale parametro l'utente passa ad essa. Quindi T può essere un valore integer, float, double o una classe che ha il moltiplicare operatore definito; in caso contrario la moltiplica operazione rimane indefinito.
5
Verificare accuratamente la firma della funzione che utilizza i modelli. Eseguire test con tutti i tipi di dati previsti per garantire che non si ottengono risultati imprevisti.
Consigli & Avvertenze
- I modelli sono una funzione relativamente nuova di C++.
- È possibile nidificare i modelli e compiere altre imprese programmazione con loro. Questo è chiamato metaprogrammazione e richiede un libro.
- I modelli sono una caratteristica della Standard Template Library (STL).