Come utilizzare Template overloading di funzioni in C ++

November 6

È possibile sovraccaricare le funzioni su modelli come potete funzioni normali. In questo modo, un nome funzione supporta i tipi di dati generici e un numero variabile di parametri, purché tali parametri sono dello stesso tipo di dati. Il programmatore ha meno di pensare a quanto il compilatore gestisce il controllo dei tipi e corrisponde a una chiamata di funzione a una firma di funzione. modello Funzione sovraccarico aiuta ad aumentare l'estrazione di uso della funzione.

istruzione

1 Rivedere come utilizzare i modelli di funzione in C ++ se il fondamento su modelli è traballante. È necessario conoscere i modelli prima di poter tentare questo tutorial.

2 Usa la parola chiave "classe" o "typename" nel modello per specificare i tipi generici. Le due parole chiave hanno usi diversi. Ma ai fini di questa esercitazione, non importa quale parola chiave si utilizza.

3 Sovraccaricare una funzione template tutte le volte che ci sono argomenti di input si desidera elaborare. È necessario farlo nella dichiarazione, così come la definizione. L'esempio seguente mostra le tre dichiarazioni di una funzione, che può stampare da uno a tre tipi di dati dello stesso tipo di standard output:

template <class T>

void print (const T t1);

template <class T>

void print (const T t1, t2 const T);

template <class T>

void print (const T t1, t2 const T, T const t3);

4 Implementare gli algoritmi di sovraccarico come segue:

template <class T>

void print (const T t1) {

cout << t1 << endl;

}

template <class T>

void print (const T t1, t2 const T) {

Cout << t1 t2 << << endl;

}

template <class T>

void print (const T t1, t2 const T, T const t3) {

Cout << t1 t2 << << t3 << endl;

}

5 Chiamate di stampa () da main () da sovraccarico con uno a tre parametri e l'utilizzo di qualsiasi tipo di dati fondamentali. Si noti che è possibile chiamare la funzione con o senza le parentesi angolari o specificazione del tipo:

int main () {

Stampa (4.f); // Stampa un galleggiante

Stampa <> (23, 37); // Stampa due interi

Stampa <char> ( 'C', 'O', 'm'); // Stampa tre caratteri

}

Consigli e avvertenze

  • Si noti che è possibile utilizzare la parola chiave "typename" al posto di "classe" al punto 3.