Como usar membros estáticos em C ++

Em C ++, você pode declarar um membro a ser compartilhado por todos os objetos de uma classe ao declarar que membro estático. Um membro de dados estáticos em C ++ é um que tenha sido declarado com o estático classe de armazenamento, como mostrado aqui:

classe Student {public: Estudante (char * pName = "sem nome"): nome (pName) {noOfStudents ++ -} ~ Student () {} noOfStudents --- int nome noOfStudents-corda estática -} - Student S1-Student S2-

O membro de dados noOfStudents faz parte da classe Aluna mas não faz parte de qualquer s1 ou s2. Isto é, para cada objecto de classe Aluna, há uma separada nome, mas existe apenas uma noOfStudents, que todos estudantes Deve compartilhar.

# 147 Bem, então, # 148- você perguntar, # 147-se o espaço para noOfStudents não é alocado em qualquer um dos objectos da classe Aluna, onde está alocado? # 148- A resposta é, # 147 Não é # 148- Você tem que alocar especificamente espaço para ele, como se segue.:

int Student :: noOfStudents = 0-

Esta sintaxe um pouco de aparência peculiar aloca espaço para o membro de dados estáticos e inicializa-lo para 0. (Você não tem que inicializar um membro estático quando você declara ele- C ++ irá chamar o construtor padrão, se você não faz.) Os dados estáticos membros deve ser global - uma variável estática não pode ser local para uma função.

O nome da classe é necessária para qualquer membro quando ele aparece fora de seus limites de classe.

Este negócio de alocar espaço manualmente é um pouco confuso até você considerar que as definições de classe são projetados para entrar em arquivos que estão incluídos por vários módulos de código-fonte. C ++ tem de saber em qual desses arquivos de origem .cpp para alocar espaço para a variável estática. Este não é um problema com as variáveis ​​não-estáticos, porque o espaço é alocado em cada objeto criado.

menu