Modello di funzione C ++ (con esempio)

Sommario

In questo tutorial, impareremo a conoscere i modelli di funzione in C ++ con l'aiuto di esempi.

I modelli sono potenti funzionalità di C ++ che ci consentono di scrivere programmi generici.

Possiamo creare una singola funzione per lavorare con diversi tipi di dati utilizzando un modello.

Dichiarazione del modello di funzione

Un modello di funzione inizia con la parola chiave templateseguita dai parametri del modello all'interno dei quali è seguita dalla dichiarazione di funzione.

 template T functionName(T parameter1, T parameter2,… ) ( // code )

Nel codice precedente, Tè un argomento del modello che accetta diversi tipi di dati ( int, floate così via) ed typenameè una parola chiave.

Quando viene passato un argomento di un tipo di dati functionName(), il compilatore genera una nuova versione di functionName()per il tipo di dati specificato.

Chiamare un modello di funzione

Dopo aver dichiarato e definito un modello di funzione, possiamo chiamarlo in altre funzioni o modelli (come la main()funzione) con la seguente sintassi

 functionName(parameter1, parameter2,… );

Ad esempio, consideriamo un modello che aggiunge due numeri:

 template T add(T num1, T num2) ( return (num1 + num2); )

Possiamo quindi chiamarlo nella main()funzione per aggiungere inte doublenumeri.

 int main() ( int result1; double result2; // calling with int parameters result1 = add(2, 3); cout << result1 << endl; // calling with double parameters result2 = add(2.2, 3.3); cout << result2 << endl; return 0; ) 
Chiamata di funzione basata sui tipi di dati

Esempio: trovare il valore assoluto dei numeri

 #include using namespace std; template T add(T num1, T num2) ( return (num1 + num2); ) int main() ( int result1; double result2; // calling with int parameters result1 = add(2, 3); cout << "2 + 3 = " << result1 << endl; // calling with double parameters result2 = add(2.2, 3.3); cout << "2.2 + 3.3 = " << result2 << endl; return 0; )

Produzione

 2 + 3 = 5 2,2 + 3,3 = 5,5

Articoli interessanti...