Introdução ao template de função C ++ (template)

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:
Insira a descrição da imagem aqui
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"

Acho que você gosta

Origin blog.csdn.net/rjszz1314/article/details/104347935
Recomendado
Clasificación