Tecnología

Inicio

Cómo utilizar plantillas de clase C ++

Supongamos que usted quiere construir una clase de C ++ para representar los números complejos ya que C ++ no incluye un tipo de datos para ellos. La clase "complejo" tiene que manejar números de tipo int, float y double. Se puede repetir el mismo código de tres veces, o puede escribir una vez y utilizar plantillas que soportan los tipos de datos genéricos. Al final, la clase se verá como una de las clases de contenedores STL.

Instrucciones

1 Familiarizarse con la sintaxis de la plantilla si no está ya. Para declarar una clase de plantilla, insertar la siguiente línea de código inmediatamente por encima de la declaración de clase, como se muestra:

template <class T>

Complejo de la clase {

// Etc ...

2 Tenga en cuenta que la "plantilla" y "clase" son palabras clave. "T" es el nombre que le asigne el tipo de datos genérico. T puede tomar la forma de un int, float o double. Siempre se debe escribir "clase" y "T" entre paréntesis angulares. También puede utilizar la palabra clave "nombre de tipo" en lugar de "clase". A pesar de estas palabras clave tienen un significado algo diferente en C ++, para los fines de este tutorial, son equivalentes.

3 Use "T" en la declaración cuerpo de la clase en la que desea el procesamiento genérico. Información sobre el miembro "real" y "imag" son de tipo T, ya que pueden tomar la identidad de cualquier tipo de número. La función miembro real () es un prototipo con T, ya que puede devolver los números de tipo int, float o double:

template <class T>

Complejo de la clase {

Yo real, imag;

público:

Complejo (const r T, T const i): real ((T) 0), ((T) 0) {}
T Real () const;

// Etc ...

4 Repetir la definición de plantilla para cada función miembro que ha definido fuera del cuerpo de la clase. Además, colocar el parámetro T dentro de soportes de ángulo y la inserta entre el nombre de la clase y el operador alcance, como sigue:

template <class T>

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

volver real;

}

5 Demostrar un objeto complejo que utiliza int y uno que utiliza float:

int main () {

Ni complejos <int> (4, -5); // Forma 4 - J5

Nf complejo <float> (4.f, -5.f); // Formulario 4.0 - j5.0

cout << ni.Real () << endl; // Impresión 4

cout << nf.Real () << endl; // Imprimir 4.0

}

6 Aprende a usar las clases de contenedores tales como vector <T> y algoritmos tales como copia (). Estudio de la STL. Desde la Biblioteca de plantillas estándar es una biblioteca genérica construida de plantillas, que es un excelente lugar para aprender a construir clases genéricas utilizando plantillas.