- Entrou
- Set 23, 2006
- Mensagens
- 1,690
- Gostos Recebidos
- 0
Os templates aplicam-se a funções e a classes e dão uma grande liberdade ao utilizador. Vejamos o seguinte caso:
Em C haviam as macros, directivas do pré-processador com que se podia dar a volta a este problema. Em C++ existem os templates. Usando templates bastaria uma função para simbolizar todas as variantes de uma mesma função soma:
O que fiz foi sobrecarga da função soma, para o compilador, apresar de terem todas o mesmo nome, são as três funções distintas, pois recebem parâmetros de diferente tipo. Bem, e que tal fazermos agora o mesmo para a multiplicação, divisão, e fazer o mesmo para parâmetros de tipos diferentes...// funções para somar dois valores
int soma( int a, int b )
{
return a+b;
}
double soma( double a, double b )
{
return a+b;
}
float soma( float a, float b )
{
return a+b;
}
Em C haviam as macros, directivas do pré-processador com que se podia dar a volta a este problema. Em C++ existem os templates. Usando templates bastaria uma função para simbolizar todas as variantes de uma mesma função soma:
O que estamos a dizer é que a função de template soma recebe dois parâmetros de um mesmo tipo T, que pode ser qualquer.// função template para somar dois valores
template< typename T>
T soma( T a, T b )
{
return a+b;
}