Introdução ao template de função C ++
Introdução de modelos de função
De modo geral, quando escrevemos uma função, seus tipos de parâmetros são determinados. Por exemplo, o seguinte protótipo de função:
void Swap(int &a,int &b);
Como você pode ver no protótipo da função, esta é uma função de troca. A função é trocar os valores de entrada de a e b.
Mas também podemos ver que os parâmetros passados são todos do tipo int, portanto, apenas dois valores int podem ser trocados.
Portanto, a questão é: Se eu passar duas variáveis duplas, terei que escrever outra função (é claro, usar a sobrecarga de função pode de fato refletir o polimorfismo de C ++), mas e os outros tipos? long, sort, long long ...
Portanto, precisamos introduzir outro modelo de conceito para realizar essa função, de modo que escrevamos apenas uma função para completar a entrada de todos os parâmetros genéricos .
Modelo de função modelo de palavra-chave
A palavra-chave do template de função é-template
template <typename AnyType>
void Swap(AnyType &a,AnyType &b)
{
AnyType temp;
temp=a;
a=b;
b=temp;
}
Como você pode ver no código acima, um tipo genérico é definido pelo modelo de palavra-chave e definido pela palavra-chave typename , onde AnyType é apenas um nome, qualquer nomenclatura canônica C ++, como "T" (e essa nomenclatura também é mais comum ) também pode
template <typename T>
exemplo
Agora, por meio de um exemplo, veremos a definição e o uso da função de modelo
#include<iostream>
using namespace std;
template <typename T>
void Swap(T &a,T &b);
int main()
{
int i=10;
int j=20;
cout<<"i,j="<<i<<","<<j<<".\n";
cout<<"Using compiler generated int swapper:\n";
Swap(i,j);
cout<<"Now i,j="<<i<<","<<j<<".\n";
double x=24.5;
double y=81.7;
cout<<"x,y="<<x<<","<<y<<".\n";
cout<<"Using compiler generated double swapper:\n";
Swap(x,y);
cout<<"Now x,y="<<x<<","<<y<<".\n";
return 0;
}
template <typename T>
void Swap(T &a,T &b)
{
T temp;
temp=a;
a=b;
b=temp;
}
Após a execução, a saída:
você pode ver que a função Swap é chamada duas vezes, uma é do tipo int e a outra é do tipo duplo, mas apenas uma função é escrita, o que economiza muito código
—————————————————————————————————————————————————— ———————————————————
Livro de referência: "C ++ Primer Plus 6th"