Nwlapcug.com


Come utilizzare modelli di funzione in C++

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 b);

}

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).