La plantilla son las características avanzadas de C ++ divididas en:
- Plantilla de función.
- Plantilla de clase.
Biblioteca de plantillas estándar de C ++ (STL)
// Formato general de la plantilla de función
/ *
plantilla <tipo tabla de parámetros> Valor de retorno nombre de la función (parámetro formal, ...) {// Cuerpo de la función
}
* /// palabra clave de plantilla
// <> significa parámetros de plantilla (dos tipos)
// 1. parámetros de tipo (class / typedef)
// 2. parámetros que no son de tipo (generalmente constantes)
#include<iostream>
using namespace std;
template <class Type>
Type max_us(Type x, Type y) {
return x > y ? x : y;
}
int main() {
int i = max_us(8, 9);
cout << i << endl;
return 0;
}
Si los tipos de los dos números son inconsistentes, habrá ambigüedad y el compilador no podrá reconocerlos. P.ej:
//歧义
//显示标识模板
float k = max_us<float>(8.1, 3);
Necesita agregar un identificador de pantalla.
Una plantilla de función es un "marco", no es un programa que realmente pueda compilar y generar código, pero una función de plantilla es una función generada al instanciar los parámetros de tipo en una plantilla de función. Es esencialmente lo mismo que una función normal y puede generar código ejecutable. .
Uso de la plantilla de matriz:
//数组模板
template <class Type,int len>
Type max_arr(Type arr[len]) {
Type ret = arr[0];
for (int i = 1; i < len; i++)
{
ret = (arr[i] > ret ? arr[i] : ret);
}
return ret;
}
//数组模板使用
int max_a = max_arr<int, 5>(a);
cout << max_a << endl;
Uso de plantilla de sobrecarga:
//重载函数模板,实现字符、字符串比较
char* max_us(char* a, char* b) {
if (strcmp(a,b))
{
return a;
}
else
{
return b;
}
}