estudiamos lo que son las plantillas en C++. En nuestra entrada de blog de hoy. Realizaremos un leve recordatorio de como se declaran las plantillas de clase y funciones en C++.
Para retomar en la siguiente sesión algunos ejemplos utilizando estas plantillas.
C++ permite crear plantillas de funciones y plantillas de clases.
La sintaxis para declarar una plantilla de función es parecida a la de cualquier otra función, pero se añade al principio una presentación de la clase que se usará como referencia en la plantilla:
template <class|typename <id>[,…]>
<tipo_retorno> <identificador>(<lista_de_parámetros>)
{
// Declaración de función
};
La sintaxis para declarar una plantilla de clase es parecida a la de cualquier otra clase, pero se añade al principio una presentación de la clase que se usará como referencia en la plantilla:
template <class|typename <id>[,…]>
class <identificador_de_plantilla>
{
// Declaración de funciones
// y datos miembro de la plantilla
};
Pero seguro que se ve mejor con un ejemplo:
template <class T1>
class Tabla {
public:
Tabla();
~Tabla();
…
};
Del mismo modo, cuando tengamos que definir una función miembro fuera de la declaración de la clase, tendremos que incluir la parte del template y como nombre de la clase incluir la plantilla antes del operador de ámbito (::). Por ejemplo:
template <class T1>
Tabla<T1>::Tabla() {
// Definición del constructor
}
Plantillas de funciones
Un ejemplo de plantilla de función puede ser esta que sustituye a la versión macro de max:
template <class T>
T max(T x, T y) {
return (x > y) ? x : y;
};
La ventaja de la versión en plantilla sobre la versión macro se manifiesta en cuanto a la seguridad de tipos. Por supuesto, podemos usar argumentos de cualquier tipo, no han de ser necesariamente clases. Pero cosas como estas darán error de compilación:
int a=2;
char b=’j’;
int c=max(a,b);
El motivo es que a y b no son del mismo tipo. Aquí no hay promoción implícita de tipos. Sin embargo, están permitidas todas las combinaciones en las que los argumentos sean del mismo tipo o clase, siempre y cuando que el operador > esté implementado para esa clase.
int a=3, b=5, c;
char f=’a’, g=’k’, h;
c = max(a,b);
h = max(f,g);
Bien este fue un leve repaso de la manera como se declaran plantillas tanto para clases como funciones. Espero te haya servido bastante como recordatorio, antes de que comencemos a realizar algunos ejemplos con plantillas en nuestra siguiente sesión.
Bibliografía
pozo, S. (01 de 03 de 2002). C++ con Clase. Obtenido de http://c.conclase.net/curso/?cap=040
0 Comentarios