Modelli C ++ funzioni

Modelli C ++ funzioni
5 (100%) 3 voti





funzione di modelli C ++, funzioni C ++ modelli, template C ++

il tema del piccolo è stato precedentemente considerato overloading di funzioni in C ++. Hai imparato circa l'opportunità di scrivere diverse funzioni con lo stesso nome, che svolgono gli stessi compiti. La differenza principale tra loro – firma (tipi e / o numero di parametri dei parametri). Quando il programma viene avviato, il compilatore sceglierà, quale delle funzioni sovraccaricate applica (supponendo, che passata alla funzione)

Modelli permettono anche funzioni per gestire diversi tipi di dati, trasmessi come parametri. Ma è abbastanza per scrivere una definizione comune di una funzione. Vedi come appare.

funzione di modelli C ++, funzioni C ++ modelli, template C ++

Con la definizione di un modello di funzione che abbiamo usato parole C ++ riservati: modello e typename. modello indica, tale modello sarà ora definito. E tra parentesi angolari dopo typename dato un nome condizionale del tipo di dati. qui, invece del nome T, È possibile assegnare qualsiasi (molto desiderabile corretta) nome.

Successivo è determinata la funzione stessa. Il tipo di ritorno specificare T. parametri: il numero di tipo T, il numero e il tipo di int. Questa funzione trova il numero e la percentuale del valore dei rendimenti del programma. E il numero, e la percentuale passato come parametri. Per esempio il primo parametro si passa a una funzione integer (100). Durante l'avviamento, il compilatore di notare che attualmente T esso int e sostituire le funzioni del modello, tutti questi T di int. Così, la funzione di compilazione ha la forma:

funzione di modelli C ++, funzioni C ++ modelli, template C ++

Noi non vediamo chiaramente, ma funzionerà bene. Qualunque sia il numero, non abbiamo passata a questa funzione come primo parametro, il compilatore crea un'istanza di un modello di funzione per ogni chiamata. Qui, il primo parametro può essere qualsiasi tipo di dati.

Come risultato, lo schermo vedrà il risultato di tale calcolo:funzione di modelli C ++, funzioni C ++ modelli, template C ++

Parlando della definizione di un modello di funzione, Voglio aggiungere, tra parentesi angolari dopo la parola chiave modello possibile registrare diversi nomi convenzionali per i tipi di dati. Perché si vuole? Considerate questo esempio:

È necessario scrivere una funzione, che avrà due numeri, determinare il massimo di loro e tornare nel programma. Cerchiamo di tenere a mente, tale funzione possiamo passare il numero di diversi tipi di. Chance e il caso, un numero è un numero intero, e la seconda – vero. Vedi cosa succede:

Il primo e secondo parametri sono funzione definiti, come i parametri di tipo T. Con la funzione di chiamate in linee 19-20 nessun problema, poiché i parametri di trasferimento sono dello stesso tipo di dati. I problemi sorgono nella riga 22 compilare. E questo è comprensibile. Il compilatore si confonderà. Egli non può convertire il tipo int in raddoppiare.

шаблоны функций c++, шаблоны функций с++, template c++

Per ovviare a questo problema, è necessario scrivere un altro modello.

qui typename T_1 indica il tipo di parametro, che viene trasmesso alla prima caratteristica. typename T_2 indica rispettivamente il tipo del secondo parametro. Questa versione delle funzioni di definizione del modello avvertono errore, conseguente trasmissione di diversi tipi di parametri.

funzione di modelli C ++, funzioni C ++ modelli, template C ++

È importante ricordare,se siete in parentesi angolari dare alcuni nomi per i tipi convenzionali di parametri di funzione (in questo esempio,), tutti questi tipi di nomi devono essere menzionate nella funzione di firma. In caso contrario, non evitare errori durante la compilazione. Per esempio è la definizione di un modello

funzione di modelli C ++, funzioni C ++ modelli, template C ++

Essa porta alle seguenti errori:

шаблоны функций c++, шаблоны функций с++, template c++

Il modello che abbiamo definito le tipologie condizionali T_1 e T_2, e la firma del tipo prescritto solo T_1 .

In pratica, è possibile soddisfare la definizione di un modello di funzione in modo tale, dove invece della parola chiave typename Si usa la parola classe. per esempio:

funzione di modelli C ++, funzioni C ++ modelli, template C ++

è equivalente alla definizione di, abbiamo preso in considerazione

funzione di modelli C ++, funzioni C ++ modelli, template C ++

prima, prima che lo standard C ++ 98, in modelli sempre usato la parola classe. Chi è meglio, quando c'era una parola chiave typename , meglio usarlo. Come è più chiaramente suggerisce, che i nomi T_1 e T_2 Essi rappresentano il tipo.

Per riassumere. La funzione template è progettato per creare una descrizione generalizzata della funzione. Tale funzione può prendere parametri di qualsiasi tipo. Il modello permette al compilatore di generare codice per una funzione specifica, come (o tipi) dati, che è stato sollevato da una chiamata.

Assicuratevi di guardare il video. Informazioni sui modelli con 14 minuti:

Newsletter nuove lezioni sulla programmazione:

15 pensieri su "Modelli C ++ funzioni

  1. А можно сделать переменную универсальной?То есть она может быть типом double,а так же и int.

Lascia un Commento

Inserire il codice nei tag: <pre class="lang:C ++ decodifica:true ">IL TUO CODICE</pre>