C ++: declarar funciones miembro estáticas

Funciones miembros pueden ser declarados estática en C ++. Funciones miembro estáticas son útiles cuando se quiere asociar una acción a una clase, pero no es necesario 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 de miembro bastante más drástica Pato :: goExtinct () no es.

Al igual que los miembros de datos estáticos, funciones miembro estáticas se asocian a 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 de miembro estático número () en el siguiente ejemplo son legales. Este ejemplo es un sencillo programa estática - un programa usando los miembros estáticos - CallStaticMember:

// CallStaticMember - mostrar dos formas de llamar a una función miembro estática // // # include #include #include using namespace std clase Estudiante {public: Estudiante (const char * pN = "sin nombre"): SNAME (PN) {noOfStudents ++ -} ~ Estudiante () {noOfStudents ---} const string nombre () {return sName-} número static int () {return noOfStudents-} protegidas: cadena sName-estáticas noOfStudents int -} - 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-> 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-> name () lt; lt; endl-delete 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 del programa // terminar para permitir al usuario ver el resultscout programa lt; lt; "Pulse Intro para continuar ..." lt; lt; endl-cin.ignore (10, ' n') - cin.get () - volver 0-}

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

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

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

Declarar 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. Agregar el const a la declaración mantiene la persona que llama modifiquen miembro de el nombre de la clase.




» » » » C ++: declarar funciones miembro estáticas