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:

https://github.com/fegomes/template

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!

You may also like...

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *