Suponha que o template de classe Funcionario tenha um dado-membro static contador. Suponha que três especializações de template de classe sejam instanciadas a partir do template de classe. Quantas cópias do dado-membro static existirão? Como o uso de cada
uma será restringido (se houver restrição)?
Passo 1
Uma especialização de modelo de classe é gerada a partir de um modelo de classe quando a instância dessa classe é criada. Nesse caso, a instância do objeto que pode se referir à especialização do modelo de classe terá uma cópia de todos os membros dessa classe. Isso envolve membros de dados estáticos e não estáticos dessa classe. Observe que um membro de dados estático é definido com a palavra-chave estática.
Passo 2
Agora, considere que o modelo de classe Employee tem um membro de dados estático chamado count. Se houver três especializações de modelo de classe geradas a partir desse modelo de classe, isso significa que três instâncias também são criadas a partir do modelo de classe Employee. Nesse caso, cada especialização de modelo de classe tem sua própria cópia de todos os membros de dados do modelo de classe Employee. Assim, existirão três cópias da contagem de membros de dados estáticos.
Passo 3
Lembre-se de que um membro estático pertence a uma classe e é compartilhado com todos os objetos dessa classe. Como Employee é um modelo de classe, isso indica que as três especializações de modelo de classe geradas a partir dele são consideradas três classes Employee diferentes que estão em tipos diferentes. Nesse caso, as três cópias da contagem de membros de dados estáticos só podem ser compartilhadas com os objetos de sua classe correspondente.
Resposta
Ver o desenvolvimento