Título: templates : T y T* Publicado por: digimikeh en 5 Octubre 2021, 05:24 am Buenas señores..
Tengo una duda a medias... creo entender como va esto de las plantillas pero quisiera estar seguro. Del siguiente codigo: Código
Entiendo que para este caso, T es un tipo generico que acepta cualquier clase de argumento (puntero, referencia o valor) Como quien dice, no tiene formato, puede ser constante, estatico, etc... Código
Como T es virgen (por decirlo de alguna forma), no esta pre-formateada, simplemente es una T sola, puede aceptar cualquier tipo de clase y con cualquier tipo de atributo... es asi? Pero en este siguiente caso: Código
Aqui T es puntero, entiendo que solo acepta una direccion de memoria u otro puntero, pero no un elemento por valor, ya que T* ha sido pre-formateado para funcionar solo como puntero. Código
Segun entiendo, en el fondo la asignacion a un tipo plantilla es como si se comportara como override de funcion: T = Acepta cualquier cosa por valor T& = Acepta cualquier cosa solo que como referencia T* = Preformateada para aceptar solo punteros o direcciones de memoria o referencias a punteros const T = Preformateada para aceptar cualquier cosa por valor pero se transforma obligatoriamente en constante const T& = Preformateada para aceptar cualquier cosa por referencia pero se transforma en constante const T* = Preformateada para aceptar solo punteros o direcciones de memoria y lo transforma a constante. En el siguiente ejemplo: Código
Es mas o menos como lo creo? Saludos Título: Re: templates : T y T* Publicado por: Loretz en 5 Octubre 2021, 08:04 am Hola, creo que te facilitará la idea si consideras que en
Código
T es el tipo del parámetro _param, o lo que es lo mismo: "el tipo de _param es T"; como cuando se tiene int i = 5; decimos que el tipo de i es int, o que i es de tipo int. (Fíjate que le he dado la vuelta a la forma en que lo dices). Cuando se tiene int* p; se dice que p es de tipo int* (Como el C++ está más centrado en tipos que el C, es por eso que se prefiere escribir int* p en lugar de int *p). En el ejemplo de acá abajo, la función genérica f tiene un parámetro t de tipo T*. Creo que al decirlo de esta manera se percibe más claramente la idea. Código
|