Página
diagramada pelo Estagiário de Docência
Rafael Rieder
Programação C/C++
Gabaritos -
Templates
Definições
Templates
são uma alternativa à sobrecarga de
funções, quando estas envolvem lógicas
de
programas e operações idênticas para
vários
tipos de dados.
O uso de templates permite ao programador a
implementação de um único
código para uma
determinada função. C++ gera automaticamente
funções gabarito para tratar cada tipo de chamada
realizada.
Para definir um gabarito de função, basta usar a
palavra-chave template seguida da lista de parâmetros entre
os
símbolos < e >. Parâmetros devem ser
precedidos da
palavra-chave typename ou class, conforme mostra o exemplo abaixo:
template
<typename
tipoGenerico> // ou template <class
tipoGenerico>
tipoGenerico
minhaFuncao(tipoGenerico valor1, tipoGenerico valor2)
{
// código da função
}
int main()
{
// meu código
}
Templates também pode ser usados para
criar gabaritos de classe (classes genéricas).
Neste caso, todos os seus métodos devem ser
implementados no arquivo de cabeçalho, uma vez que o
compilador gera automaticamente o código quando a
palavra-chave template é encontrada.
/***** minhaClasse.h
*****/
template <class Alpha> // ou template
<typename Alpha>
class minhaClasse
{
public:
minhaClasse();
void meuMetodo(Alpha var);
private:
Alpha
_var;
};
template <class T>
minhaClasse<T>::minhaClasse() {
// minha construtora
}
template
<class
T>
minhaClasse<T>::meuMetodo(Alpha
var) {
_var = var;
}
Para utilizar este template e
criar com ele novas classes, usa-se a sintaxe abaixo, na qual o tipo de
dados colocado entre < > substituirá o tipo T utilizado na
definição da classe genérica.
minhaClasse<int> teste1; // Cria uma classe na qual o
template T será substituído por 'int'
minhaClasse<char*>
teste2; // Cria uma classe na qual o template
T será substituído por
'char*'
minhaClasse<Pessoa>
teste3; // Cria uma classe na qual o template
T será substituído por 'Pessoa'
Exemplo
de gabarito de função
O
código-fonte do Exemplo 1 pode ser obtido aqui.
O
código-fonte do Exemplo 2 pode ser obtido aqui.
Exemplo
de gabarito de classe
O
código-fonte do Exemplo 1 pode ser obtido aqui.
O
código-fonte do Exemplo 2 pode ser obtido aqui. Este exemplo
implementa uma PILHA de objetos genéricos.