Partilhar via


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çãoObservaçã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.

Consulte também

Referência

Modelos de função