C ++: Declarando Funções membro estático
funções de membro pode ser declarada estática em C ++. funções de membro estático são úteis quando você deseja associar uma ação a uma classe, mas você não precisa associar essa ação com um objeto particular.
Por exemplo, a função de membro Duck :: voar () está associada a uma determinada Pato, Considerando que a função de membro em vez mais drástica Pato :: goExtinct () não é.
Como membros de dados estáticos, funções de membro estático está associado a uma classe e não com um determinado objeto dessa classe. Isto significa que, como uma referência a um membro de dados estáticos, uma referência a uma função de membro estático não requer um objecto. Se um objeto estiver presente, apenas o seu tipo é usado.
Assim, tanto as chamadas para a função de membro estática número() no exemplo a seguir são legais. Este exemplo é um programa simples e estático - um programa usando membros estáticos - CallStaticMember:
// CallStaticMember - demonstram duas maneiras de chamar a // função de membro estático // # include#incluir #incluir Estudante que usa o namespace std-classe {public: Estudante (char const * PN = "sem nome"): sname (PN) {noOfStudents ++ -} ~ Student () {} noOfStudents --- const string name () {return sName-} número static int () {return noOfStudents-} protegidas: noOfStudents int cadeia sName-estático -} - int Student :: noOfStudents = 0-int main (int argcs, char * pArgs []) { // cria dois alunos e pedir a classe "quantos?" S1 Student ( "Chester") - Student * pS2 = new Student ( "Scooter") - cout lt; lt; "Criado" lt; lt; s1.name () lt; lt; "E" lt; lt; pS2-> name () lt; lt; endl-cout lt; lt; "Número de alunos é" lt; lt; s1.number () lt; lt; endl - // agora livrar-se de um estudante e pedir againcout lt; lt; "Apagar" lt; lt; pS2-> name () lt; lt; endl-delete PS2 cout lt; lt; "Número de alunos é" lt; lt; Número de estudante() lt; lt; endl - // espera até que o usuário está pronto antes de terminar o programa // para permitir que o usuário veja o resultscout programa lt; lt; "Pressione Enter para continuar ..." lt; lt; endl-cin.ignore (10, ' n') - cin.get () - retornar 0-}
Este programa cria dois Aluna objetos, um local e um fora da pilha. Em seguida, exibe seus nomes e a contagem do número de alunos. Em seguida, o programa elimina um dos alunos e pede a classe quantos alunos estão lá fora. A saída do programa aparece como segue:
Criado Chester e ScooterNumber de estudantes é 2Deleting ScooterNumber de estudantes é 1Prima qualquer tecla para continuar ...
Esta classe mantém seus membros de dados protegidos e fornece funções de acesso que permitem fora (nãoAluna) Código para ler, mas não modificá-los.
Declarar o tipo de retorno nome() método seja corda em vez de simplesmente corda faz com que a função para retornar uma referência ao nome existente do objeto, em vez de criar um objeto String temporário. adicionando o const à declaração mantém o chamador de modificar membro do nome da classe.