Come utilizzare i modelli di funzione in C ++

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.

istruzione

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.

Consigli e avvertenze

  • I modelli sono una caratteristica relativamente nuova di C ++.
  • E 'possibile annidare modelli ed eseguire altre prodezze di programmazione con loro. Questo è chiamato metaprogramming e richiede un libro.
  • I modelli sono una caratteristica della Standard Template Library (STL).