[C ++] Cómo usar plantillas

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;
	}
}

 

 

Supongo que te gusta

Origin blog.csdn.net/weixin_41865104/article/details/108032413
Recomendado
Clasificación