Especialização de Template em C++
Gosto muito de usar essa abordagem para resolver algumas necessidades dos projetos que trabalho, devido a facilidade que esse código proporciona para o desenvolvedor construir aplicações com códigos mais simples.
Conforme no link do Github abaixo, mostro um exemplo de especialização, como explicarei a seguir:
Imaginemos um cenário aonde precisamos de classes que implementa alguns tipos como int, string e double, estou representando esses tipos com o enum, mas poderia ser de outra forma.
enum etype {
tint = 0,
tstring = 1,
tdouble = 2
};
Conforme o main do projeto do Github temos a seguinte situação:
int main()
{
// temos o tipo tint, tstring e tdouble declarado
type<etype::tint> age = 28;
type<etype::tstring> name = "Fernando";
type<etype::tdouble> height = 1.66;
// somente a especialização tint tem a implementação da função increase
age.increase(1);
std::cout << age.str() << "-" << age.ctype() << std::endl;
std::cout << name.str() << "-" << name.ctype() << std::endl;
// somente a especialização tdouble tem a implementação de round e truncate.
std::cout << height.round() << "-" << height.truncate() << std::endl;
return 0;
}
A diferença de usar especialização de template e herança é que a herança carrega todo o peso da classe pai ou das classes pais.
Gosta de usar template ou tem alguma dúvida? Deixe seu comentário!