14/04/2015, 20:36
|
| | | Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 1 mes Puntos: 38 | |
Respuesta: Diferenciar entrada de datos por consola Eso es así por que en esas funciones el si sabe el formato que recibir por parámetros. Pero en la que pone <typename T> uno de los datos es genérico, o sea que puede recibir un char un int o cualquier otro tipo.
En resumen todas las funciones se llaman iguales, por el mismo nombre, lo que indica una sobrecarga. Lo que las distingue son sus argumentos, si el enviá 2 datos que no encajan correctamente en 2 de las funciones, seguramente en la que tiene la T como parámetro, esa sí se lo "traga todos los tipos". Lo único que hace es que si es invocada la que tiene la T retornará false.
Tienes una plantilla que recibe un const string& y un int&, otra que recibe un const string& y un float&, y por ultimo una que recibe const string& y un T&(cualquier tipo). ¿Si envio Convert( "lol", 32) sabes cual invoca? Invoca la const string& y un int&. Por otro lado si envió Convert( "lol", 23.42) invocará la const string& y un float&. ¿Y si envio? Convert( "Lol", "Lol" ) ??? será la const string& y un T&, esa retorna false si eso pasa. =)
¿Se parecen a if else más elaborados a que si XD?. si(if) envio un string y un float entra en una, si(else if, o otro if) envio un string y un int entra en otra, si no(else) envio un string y otro tipo de dato que no sea int o float entonces(else) entra en la genérica (string y T).
No tengo mucha exp con templates pero he leido algo sobre ellas. |