Red de conocimiento informático - Computadora portátil - La diferencia entre plantillas de funciones y funciones de plantilla en C++

La diferencia entre plantillas de funciones y funciones de plantilla en C++

Las funciones de plantilla pueden realizar conversiones de tipos de datos implícitas, mientras que las plantillas de funciones no realizan conversiones de tipos automáticas.

I. Si una plantilla de función y una función normal con el mismo nombre están en el mismo alcance, qué función se llamará primero, como se muestra a continuación:

1. Se llamará estrictamente con coincidencia de tipos, y la función ordinaria se llamará mediante la conversión de tipo de parámetro de función (siempre que se realice la conversión de tipo automática).

2. Al llamar a una plantilla de función, la esencia es parametrizar el tipo, que coincidirá estrictamente de acuerdo con el tipo, y no se realizará la conversión automática de tipo. Al llamar a una función ordinaria, puede La conversión de tipo de datos implícita (siempre que sea posible la conversión de tipo automática) es la diferencia esencial entre funciones ordinarias y funciones de plantilla.

2. Las plantillas de funciones se pueden sobrecargar como funciones ordinarias

1. El compilador de C++ dará prioridad a las funciones ordinarias: esto se debe a que las funciones ordinarias ya existen, mientras que las funciones de plantilla requieren más juicio. , si la plantilla de función puede producir una mejor coincidencia, se prefiere la plantilla de función.

2. El compilador puede restringirse a llamar únicamente a plantillas a través de la sintaxis de la lista de argumentos de plantilla vacía (es decir, agregar <> después del nombre del parámetro, ¡inferencia de tipo automática implícita!) y cómo el compilador de C++ admite la Mecanismo de plantilla.