Acabamos de aprender sobre sobrecarga de funções , que podem lidar com vários tipos de dados. Embora tenham o mesmo nome, eles ainda precisam ser definidos separadamente. Seria ótimo se o código pudesse ser simplificado e modelado! Para esse fim, C++ fornece um mecanismo de modelo de função, que melhora muito a capacidade de reutilização do código.
O modelo de função permite criar uma função geral que oferece suporte a vários parâmetros formais. Use o modelo de palavra-chave para defini-lo no seguinte formato:
template<nome do tipo de classe 1, nome do tipo de classe 2...> valor de retorno nome da função (coluna da lista de parâmetros formal) lista de parâmetros do modelo {corpo da função}
Para explicar, nesta forma geral, o modelo na primeira linha <nome do tipo de classe 1, nome do tipo de classe 2...> é uma declaração de modelo que é a palavra-chave que define a função do modelo. colchetes angulares. Os anteriores são Use class (ou typename para definir). Em seguida, siga com o modelo de função definido. Lembre-se de não adicionar outras instruções no meio, caso contrário, um erro será relatado!
Abaixo, vamos dar uma olhada em um exemplo específico!
#include<iostream>usingnamespacestd;template<classT1,classT2>T1add(T1x,T2y){cout<<sizeof(T1)<<,<<sizeof(T2)<<t;returnx+y;}intmain(){ cout<<add(10,20)<<endl;;cout<<add(3.14,5.98)<<endl;cout<<add('A',2)<<endl;return0;}
O exemplo acima é um modelo para uma função de adição. Você pode ver que definimos um modelo de função de adição e os tipos de variáveis nele são substituídos por T1 e T2.
Na função principal, quando realmente a chamamos, chamamos três vezes, passando três tipos diferentes. Os tipos T1 e T2 na função de modelo serão alterados para tipos específicos de acordo com o tipo real passado. uma instância da alteração do modelo.
Em seguida, executamos o programa e podemos ver quais tipos T1 e T2 são chamados a cada vez, quantos bytes eles possuem e o resultado da soma. O efeito de execução é o seguinte:
Você pode entender o código linha por linha e concluir o experimento sozinho.