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