Instanciação explícita
Instanciação explícita permite criar uma instanciação de uma classe de modelo ou a função sem uso efetivo em seu código.Como isso é útil quando você está criando a biblioteca de arquivos (. lib) que usam modelos para distribuição, definições de modelo sem instância não são colocadas em arquivos de objeto (. obj).
A seguir instancia explicitamente MyStack para int variáveis e seis itens:
template class MyStack<int, 6>;
Esta instrução cria uma instanciação do MyStack sem reserva de qualquer armazenamento para um objeto; código é gerado para todos os membros.
A seguir instancia explicitamente somente a função de membro do construtor:
template MyStack<int, 6>::MyStack( void );
Os modelos de função podem ser instanciados explicitamente por redeclaring-los com um argumento de tipo específico, como visto no exemplo da Instanciação de modelo de função.
Específicos do Microsoft
Você pode usar o extern palavra-chave para impedir a instanciação automática de membros.Por exemplo:
extern template class MyStack<int, 6>;
Da mesma forma, você pode marcar os membros específicos como sendo externos e não instanciado da seguinte maneira:
extern template MyStack<int, 6>::MyStack( void );
Observação |
---|
O extern palavra-chave na especialização só se aplica a funções de membro definidas fora do corpo da classe.Funções definidas dentro da declaração de classe são consideradas funções embutidas e sempre são instanciadas. |