C ++: declarar funciones miembro estáticas

Las funciones miembro pueden ser declaradas como static en C ++. métodos estáticos son útiles cuando se desea asociar una acción a una clase, pero no tienen que asociar esa acción con un objeto en particular.

Por ejemplo, la función miembro Pato :: volar () está asociada con un particular, pato, mientras que la función miembro bastante más drástica Pato :: goExtinct () no es.

Al igual que los miembros de datos estáticos, métodos estáticos están asociados con una clase y no con un objeto particular de esa clase. Esto significa que, al igual que una referencia a un miembro de datos estáticos, una referencia a una función miembro estática no requiere un objeto. Si un objeto está presente, sólo se utiliza su tipo.

De este modo, ambas llamadas a la función miembro estática número() en el siguiente ejemplo son legales. Este ejemplo es un simple programa de estática - un programa usando los miembros estáticos - CallStaticMember:

// CallStaticMember - mostrar dos formas de llamar a una función miembro estática // // # include #incluir #incluir Estudiante utilizando espacio de nombres de clase std {public: Estudiante (const char * PN = "sin nombre"): SName (PN) {noOfStudents ++ - Estudiante} ~ () {} --- noOfStudents const string& nombre () {return} sName- número static int () {return} noOfStudents- protegidas: noOfStudents int cadena sName-estáticas -} - int Estudiante :: noOfStudents = 0-int main (int argcs, char * pargs []) { // crear dos estudiantes y pregunte a la clase "¿cuántos?"s1 estudiante ("Chester") -Estudiante * pS2 = new Estudiante ("Scooter") -cout lt; lt; "Creado " lt; lt; s1.name () lt; lt; " y "lt; lt; pS2-gt; name () lt; lt; endl-cout lt; lt; "Número de estudiantes es "lt; lt; s1.number () lt; lt; endl - // ahora deshacerse de un estudiante y pedir againcout lt; lt; "Eliminación " lt; lt; pS2-gt; name () lt; lt; endl-eliminar PS2-cout lt; lt; "Número de estudiantes es "lt; lt; Número de estudiante() lt; lt; endl - // espera hasta que el usuario esté listo antes de la terminación del programa // para permitir al usuario ver el programa resultscout lt; lt; "Pulse Intro para continuar ..." lt; lt; endl-cin.ignore (10, `n`) - cin.get () - volver 0-}

Este programa crea dos Estudiante objetos, uno local y uno fuera del montón. A continuación, muestra sus nombres y el recuento del número de alumnos. A continuación, el programa elimina uno de los estudiantes y pregunta a la clase cuántos estudiantes están ahí fuera. La salida del programa aparece como sigue:

Creado Chester y ScooterNumber de estudiantes es 2Deleting ScooterNumber de estudiantes se 1Mantenga cualquier tecla para continuar ...

Esta clase mantiene a sus miembros de datos protegidos y proporciona funciones de acceso que permiten el exterior (noEstudiante) Código para leer pero no modificarlos.

Declarando el tipo de retorno de nombre() método sea cuerda& en lugar de simplemente cuerda hace que la función para devolver una referencia al nombre existente del objeto en lugar de crear un objeto de cadena temporal. la adición de la const a la declaración mantiene la persona que llama desde la modificación de Identidades de la clase.

Artículos Relacionados