ariável estática dentro da função templa
Em C ++, se você definir esta função no header.hpp
void incAndShow()
{
static int myStaticVar = 0;
std::cout << ++myStaticVar << " " << std::endl;
}
e você inclui header.hpp em pelo menos dois arquivos .cpp. Então você terámultiple definition of incAndShow()
. O que é esperado. No entanto, se você adicionar um modelo à função
template <class T>
void incAndShow()
{
static int myStaticVar = 0;
std::cout << ++myStaticVar << " " << std::endl;
}
então você não terá nenhummultiple definition of
erro. Da mesma forma, dois .cpp diferentes chamando a função com o mesmo modelo (por exemplo,incAndShow<int>()
), Vai compartilharmyStaticVar
. Isso é normal? Estou fazendo essa pergunta, porque confio nesse "recurso" (compartilhando a variável estática) e quero ter certeza de que não é apenas minha implementação que está fazendo isso.