Si supponga di voler costruire una classe C + + per rappresentare i numeri complessi da C + + non include un tipo di dati per loro. La classe " Complex " deve gestire i numeri di tipo int , float e double . Si può ripetere lo stesso codice per tre volte , oppure è possibile scrivere una volta e utilizzare i modelli che supportano i tipi di dati generici. Alla fine , la classe sarà simile a una delle classi container STL . Istruzioni
1
acquisire familiarità con la sintassi modello se non siete già . Per dichiarare una classe modello , inserire la seguente riga di codice immediatamente sopra la dichiarazione di classe , come illustrato :
template
class Complex {
//ecc ..
2
noti che " template " e "classe" sono parole chiave . "T" è il nome assegnato al tipo di dati generico . T può assumere la forma di un int , float o doppio . È sempre necessario racchiudere "classe" e "T" tra parentesi angolari . È inoltre possibile utilizzare la parola chiave " typename " al posto di " classe". Anche se queste parole hanno un significato un po 'diverso in C + + , per i fini di questa esercitazione , sono equivalenti .
3
Usare " T" nella dichiarazione corpo della classe in cui si desidera l'elaborazione generico . Dati gli "reale" e " imag " sono di tipo T , perché possono assumere l'identità di qualsiasi tipo di numero. La funzione di membro Real ( ) è un prototipo con T perché può restituire numeri di tipo int , float o double :
template
class Complex {
T reale , imag ;
pubblico :
Complex ( const T r , const T i ) : real ( ( T ) 0 ) , ( ( T) 0 ) { } T real ( ) const ;
//ecc ..
4
Ripetere la definizione del modello per ogni funzione membro definito al di fuori del corpo della classe . Inoltre, inserire il parametro T dentro parentesi angolari e inserirlo tra il nome della classe e l'operatore di ambito , come segue :
template
T Complex < T > :: Real ( ) const {
ritorno reale ;
}
5
Dimostrare un oggetto complesso che utilizza int e uno che usa float:
int main ( ) {
Complesso ni ( 4 , -5 ) ; //modulo 4 - J5
Complesso nf ( 4.f , - 5.f ) ; //modulo 4.0 - j5.0
cout cout }
6
Scopri come utilizzare le classi contenitore come vettore < T > e algoritmi come copy () . Studiare la STL . Dal momento che la Standard Template Library è una libreria generica costruzione di modelli , è un ottimo posto per imparare a costruire classi generiche utilizzando i modelli .