Bienvenidos sean a este post, hoy veremos otro parametro de template.
En el post anterior vimos al primero de los parametros para templates. Hoy veremos al segundo, estos son referidos como los tipos incorporados mediante librerias o los creados por el usuario. Como pueden darse cuenta, son los parametros que hemos visto en posts anteriores. Veamos algunas de las sintaxis disponibles:
template < typename A >
template < class T >
template < class T = void >
template < typename... R >
Como pueden ver es lo mismo que estuvimos viendo anteriormente donde identificaremos mediante typename o class seguido con un identificador para que podamos usarlo en una funcion o clase, tal como vinimos haciendo hasta ahora, pero tambien podemos asignarle un valor o un tipo predeterminado como se ve en el ejemplo. Los que vimos en template variados tambien caen dentro de los parametros type pero recuerden que estos solo pueden ser usados a partir de C++11. Estas no son las unicas formas validas de trabajar porque tambien podemos hacerlo de la siguiente manera:
template < typename >
template < class >
template < class = void >
template < typename... >
Como pueden ver es exactamente lo mismo pero sin los identificadores. Esto es asi porque los mismos son opcionales para la operacion. Aunque deben tener en cuenta que la utilizacion de los parametros sin nombres es para los archivos de encabezado. Porque esta pensado para los prototipos tanto de clases como funciones. Para redondear este tema vamos a analizar el siguiente ejemplo:
#include <iostream>
template <class T = const char*>
class Objeto
{
public:
T dato;
void mostrar() { std::cout << dato << std::endl; }
};
int main()
{
Objeto<> o1;
Objeto<int> o2;
o1.dato = "Hola, Mundo!";
o2.dato = 12;
o1.mostrar();
o2.mostrar();
return 0;
}
Este codigo no es muy distinto a otros que hayamos visto anteriormente pero agregamos un tema de los citados anteriormente. En el template le agregamos un valor predeterminado donde en caso de no informar un tipo tomara a este. Luego tenemos una clase donde tiene una propiedad para almacenar un valor del tipo del template y un metodo para mostrar el valor asignado, nada del otro mundo. En el main, creamos dos objetos de esta clase pero en un caso no pasaremos ningun tipo y en el otro si. Asignamos un valor para la propiedad de cada objeto. Por ultimo, llamamos al metodo para mostrar la propiedad de cada objeto. Compilemos y veamos como es la salida:
$ ./plantilla
Hola, Mundo!
12
$
Como pueden ver funciono perfectamente, dado que el valor pasado en el primer objeto coincide con el valor predeterminado para nuestro template. Y el resto como pueden ver es la manera predeterminada de trabajar con template.
En resumen, hoy hemos visto a parametro type de template, que es, para que sirve, como se aplica, algunas observaciones y un ejemplo para repasar como se usa. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donatión
It’s for site maintenance, thanks!
$1.50
