Nwlapcug.com


Come utilizzare modelli di classe c + +

Si supponga di che voler costruire una classe C++ per rappresentare i numeri complessi, dal momento che C++ non include un tipo di dati per loro. La classe "Complex" deve gestire un numero di tipo int, float e double. È possibile ripetere lo stesso codice tre volte, oppure si può scrivere una volta e utilizzare i modelli che supportano tipi di dati generici. Alla fine, la classe sarà simile a una delle classi contenitore STL.

Istruzioni

1

Acquisire familiarità con la sintassi del template se non siete già. Per dichiarare una classe modello, è necessario inserire la seguente riga di codice immediatamente sopra la dichiarazione di classe, come mostrato:

modello < classe T >

Classe {Complex

ecc...

2

Si noti che il "modello" e "classe" sono parole chiave. "T" è il nome assegnato al tipo di dati generico. T può assumere la forma di un int, float o double. È sempre necessario racchiudere "classe" e "T" tra parentesi angolari. È inoltre possibile utilizzare la parola chiave "typename" al posto di "classe". Anche se queste parole chiave hanno un significato leggermente diverso in C++, ai fini di questa esercitazione, sono equivalenti.

3

Utilizzare "T" nella dichiarazione del corpo della classe in cui si desidera il trattamento generico. Membro dati "reali" e "imag" sono di tipo T, perché possono assumere l'identità di qualsiasi tipo di numero. La funzione membro Real() è il prototipo con T perché può restituire un numero di tipo int, float o double:

modello < classe T >

Classe {Complex

T real, imag;

pubblico:

Complesso (const T r, const T ho): real ((T) 0), ((T) 0) {}
T Real() const;

ecc...

4

Ripetere la definizione del modello per ogni funzione membro che è definito all'esterno del corpo della classe. Inoltre, inserire il parametro T all'interno di parentesi angolari e inserirlo tra il nome della classe e l'operatore di ambito, come segue:

modello < classe T >

Complesso T < T >:: Real() () {const

ritorno reale;

}

5

Viene illustrato un oggetto complesso che utilizza int e uno che utilizza galleggiante:

int Main () {

Ni complesse < int > (4, -5); modulo 4 - j5

Complesso nf < galleggiante > (4F, - 5. f); formare 4.0 - j5.0

cout << ni. Real() << endl; stampa 4

cout << nf. Real() << endl; stampa 4.0

}

6

Imparare a utilizzare le classi contenitore come vettore < T > e algoritmi come Copy (). Studiare il STL. Poiché la Standard Template Library è una libreria generica costruita dei modelli, è un luogo eccellente per imparare a costruire classi generiche mediante modelli.