Introducción a los templates en C++

Posteado el June 20th @ 3:30 pm por ralbornoz

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:

C++:
template <class tipo_dato>
class nombre_clase
{
  ...
};


Páginas: 1 2 3



1 Trackbacks/Pingbacks

  1. Trackback: programame.net on January 6, 2007

6 Comentarios

  1. Nathalie
    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

  2. Juan
    December 17, 2007

    Te felicito por el artículo, la verdad esta todo muy bien explicado.
    Asi entiende cualquiera.

    Saludos.

  3. Alex
    March 19, 2008

    Buen articulo, me sirvio de mucho gracias..

  4. Cristian
    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!

  5. Oscar
    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!

  6. Oscar
    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

Dejar un comentario