Una de las razones por la que es bueno aprender a utilizar los templates (plantillas), es para no estar reescribiendo código al hacer alguna cosa para diferentes tipos de datos, es decir con una misma clase o función podremos manejar un algoritmo, independientemente del tipo de datos.
Es común que cuando creamos una lista enlazada para manejar por ejemplo una lista de enteros, construyamos una clase con sus respectivas funciones, y dentro de ella creamos una variable de tipo int, para guardar el dato. En un principio todo bien, la clase funcionará a la perfección y podremos usar listas de enteros en nuestro programas, pero que pasarÃa si también necesitamos mantener otra lista enlazada, pero esta vez de string. Bueno, fácil, me creo otra clase similar, y ahora en la parte donde puse el tipo de la variable se lo cambio a string, y hago un copy/paste del código de la otra clase. Eso resulta pero estamos perdiendo tiempo, recodificando de nuevo.
ImagÃnate ahora que necesitas crear una lista enlazada de personas para almacenar los datos de esta, para ello crearemos un struct con diferentes campos, rut, nombre, dirección, teléfono, etc. Ahora otra vez tendrÃamos que hacer una copia de la clase que maneja enteros o string, y cambiar el tipo de dato de la variable que tenÃamos anteriormente por un struct con sus campos respectivos. Luego, si necesitamos almacenar otros tipo datos en la lista, de nuevo con lo mismo, copy/paste y cambiando algunas partes del código.
Para no tener que estar realizando estas tareas repetitivas cada vez, que además pueden conducir a muchos bugs en el código, existen los templates, los cuales son una forma de crear clases o funciones abstractas para definir el comportamiento de estas, sin tener en cuenta que tipo de datos va a usar.
El uso de templates es lo que se denomina programación genérica. En la programación genérica nos enfocamos en los algoritmos y no en los tipos de datos. Esta forma de programar nos ayuda a mantener un código mas claro, libre de errores y además es mas fácil de mantener, pero lo mas importante de todo es que reutilizamos código de forma sencilla y práctica.
La sintaxis básica para declarar un plantilla de clase es la siguiente:
class nombre_clase
{
...
};
October 11, 2007
Hola, muy bueno el articulo, me sirvió bastante ya que estoy aprendiendo esto de los templates y no entendÃa mucho, pero ahora gracias a ti :D si entiendo =)
Bye
December 17, 2007
Te felicito por el artÃculo, la verdad esta todo muy bien explicado.
Asi entiende cualquiera.
Saludos.
March 19, 2008
Buen articulo, me sirvio de mucho gracias..
June 2, 2008
Hola!, buenisimo, coincido con los demas, muy bien explicado, me aclaró mucho el panorama, ya que tenia una nocion para que servia, pero no estaba seguro como se implementaba!
Gracias!
June 5, 2008
Excelente tutorial! Sencillo y eficaz. Solo noto algo que creo q es un error, en el ejemplo que dice como definir una funcion que devuelva el tipo del template dice:
”
template
tipo nombre_clase::nombre_funcion()
{
…
}
”
y asi como está no compila, pero si en vez de tipo se pone tipo_dato como en los otros ejemplos si funciona. Esto me confundio por unos minutos. Gracias!
June 5, 2008
correccion, en el comentario anterior se elimino lo que estaba entre los signos de menor y mayor que, que estan despues de la palabra template