Supongamos que desea crear un C + + clase para representar números complejos ya que C + + no incluye un tipo de datos para ellos. La clase " Complex" debe 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 las 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 , inserte la siguiente línea de código inmediatamente por encima de la declaración de la clase , como se muestra:
plantilla
clase Complex {
//etc ..
2
Nota que " plantilla " y "clase" son las 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 " nombre de tipo " en lugar de "clase". A pesar de estas palabras tienen un significado algo diferente en C + +, para los fines de este tutorial , son equivalentes.
3
Utilice " T" en la declaración de cuerpo de la clase en la que desea 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 de miembro real () es un prototipo con T , ya que puede devolver el número de tipo int , float o double :
plantilla
clase Complex { T
real imag ;
públicos :
Complex (const T r , const T i ) , ( (T ) 0 ) { } T real ( ) const real ( (T ), 0 ) ;
//etc ..
Página 4
Repetir la definición de plantilla para cada función miembro que ha definido fuera del cuerpo de la clase . También, coloque el parámetro T dentro de paréntesis angulares e insertarlo entre el nombre de la clase y el operador de ámbito , de la siguiente manera :
plantilla
Complejo T < T> :: Real ( ) const {
regreso real;
}
5
Demostrar un objeto complejo que utiliza int y otro que utiliza float:
int main () {
Complejo ni ( 4 , -5 ) //formulario 4 - j5
Complejo nf ( 4, f , - 5.f ) //formulario 4.0 - j5.0
cout cout }
6
Aprenda a utilizar las clases de contenedores como vector < T> y algoritmos como copy () . Estudiar la STL . Desde la Biblioteca de plantillas estándar es una librería genérica construida de plantillas , es un excelente lugar para aprender a construir clases genéricas utilizando plantillas .