Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 13940|Respuesta: 0

[C++] Pensando en plantillas en C++

[Copiar enlace]
Publicado en 4/10/2014 20:45:19 | | |
En lenguajes de alto nivel, usamos sobrecarga para funciones, que se emplea en funciones con funciones diferentes pero con el mismo número de parámetros, y se necesitan plantillas para diferentes tipos y el mismo número de parámetros
applet C++

  1. #include<iostream>
  2. using namespace std;

  3. template <class T>
  4. T max(T a,T b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a,b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Copiar código

Este es un ejemplo sencillo: la palabra clave plantilla<clase T> es el inicio de una estructura de plantilla, por lo que no necesitamos escribir varios códigos en C++ con la misma función repetidamente al buscar el valor máximo
Ten en cuenta que al llamar a una función, su tipo se empareja automáticamente. No hace falta que se muestre.
Lo anterior es el uso más básico, pero nos encontraremos con las siguientes situaciones

  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Copiar código

Qué hacer cuando nuestra función necesita dos tipos diferentes, creo que puedes entenderlo después de leer el código anterior. Pero bueno, lo que tienen en común es que los tipos se emparejan automáticamente.
De hecho, también tenemos errores: si no podemos emparejar bien el tipo, es decir, "la cabeza de toro no está bien", entonces la coincidencia automática del compilador cambiará el tipo de parámetro según las reglas de conversión implícita de tipos, lo que eventualmente llevará a la pérdida de precisión del resultado.
Mira el código, puedes intentarlo.
  1. #include<iostream>
  2. using namespace std;

  3. template <class T,class E>
  4. E max(T a,E b)
  5. {
  6. return         a>b?a:b;
  7. }

  8. int main()
  9. {
  10. int a;float b;cin>>a>>b;
  11. cout<<max(a,b);
  12. return 0;
  13. }
Copiar código
El contenido anterior no es muy difícil, pero también hay muchos lugares que se pueden explorar, no sé cuáles son vuestras opiniones





Anterior:c Programa Mini escrito por Inline
Próximo:¡Publiqué un logo hecho para mi foro y se lo mostré a todo el mundo!
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com