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 Duck :: 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 exige um objeto. Se um objecto se encontra presente, apenas a sua tipo é usado.

Video: FUNÇÕES | Linguagem C #036

Assim, tanto as chamadas para a função de membro estático 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 usando Student namespace std-classe {public: Estudante (char const * PN = "no name"): SName (PN) {noOfStudents ++ -} ~ Student () {noOfStudents ---} const string& name () {return sName-} número static int () {return noOfStudents-} protegidas: noOfStudents int corda 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 ("Lambreta") -cout lt; lt; "Criada " lt; lt; s1.name () lt; lt; " e "lt; lt; pS2-gt; nome () 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; "Excluindo " lt; lt; pS2-gt; nome () 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 () - 0-} retornar

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 apaga um dos alunos e pede à classe quantos alunos estão lá fora. A saída do programa aparece da seguinte forma:

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.

Video: Programação em C# - Classes - Métodos Estáticos - 32

Declarando o tipo de retorno nome() método seja corda& ao invés 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.


Publicações relacionadas