Plantillas (templates)

Las librerías consisten básicamente en código fuente con plantillas que se ``instancian'' en tiempo de compilación según las necesidades del programador. En resumen, las plantillas suponen un esquema de programación muy flexible, de tal modo que se pueden escribir rutinas enteras que valen para cualquier tipo de variable.


\begin{landscape}
% latex2html id marker 1483\begin{table}
\begin{center}
\beg...
...n: \lq\lq tradidional'',
con sobrecarga y con plantillas.}
\end{table}\end{landscape}

Imaginemos que queremos programar una rutina que divida dos números, distinguiendo entre división entera y entre coma flotante (un asunto, por lo demás, que suele ser problemático en aplicaciones reales); se puede plantear este problema de tres maneras, como se muestra en la tabla 3.1. El enfoque tradicional consistiría en definir dos funciones casi idénticas, pero con nombres distintos. En c++ se permite ``sobrecargar'' las funciones, de modo que dos funciones distintas pueden tener el mismo nombre y el compilador selecciona una u otra dependiendo de (generalmente) los argumentos de la función. Si embargo, se ve que en este caso los cuerpos de las dos funciones son idénticos. Por medio de las plantillas, se puede escribir un código genérico que el compilador adapta (``instancia'') según haga falta. En este ejemplo, el operador de división ``/'' está definido para enteros y números de coma flotante, pero el código funcionaría para cualquier objeto que tuviera ``/'' definido (vectores en el espacio, puntos, ...).

Daniel Duque 2011-11-10