Cómo utilizar miembros estáticos en c ++

En C ++, se puede declarar un miembro para ser compartido por todos los objetos de una clase declarando que miembro estático. Un miembro de datos estáticos en C ++ es uno que ha sido declarada con la estático clase de almacenamiento, como se muestra aquí:

clase Student {public: Estudiante (char * pName = "sin nombre"): nombre (pName) {noOfStudents ++ -} ~ Estudiante () {noOfStudents ---} static int nombre noOfStudents cuerdas -} - Estudiante s1-Estudiante S2-

El miembro de datos noOfStudents es parte de la clase Estudiante pero no forma parte de cualquiera s1 o s2. Es decir, para cada objeto de la clase Estudiante, hay una separada nombre, pero sólo hay una noOfStudents, que todo Estudiantes deben compartir.

" Pues bien, " usted pregunta, " si el espacio para noOfStudents no se asigna en cualquiera de los objetos de la clase Estudiante, donde se asignó "? La respuesta es, " No es ". Usted tiene que asignar específicamente espacio para ello, de la siguiente manera:

int Estudiante :: noOfStudents = 0-

Esta sintaxis un tanto peculiar aspecto asigna espacio para el miembro de datos estático y lo inicializa a 0. (No es necesario inicializar un miembro estático cuando se declara IT- C ++ invocará el constructor por defecto si no lo hace.) De datos estático los miembros deben ser globales - una variable estática no puede ser local a una función.

El nombre de la clase se requiere para cualquier miembro cuando aparece fuera de sus límites de clase.

Este asunto de la asignación de espacio de forma manual es algo confuso hasta que se considera que las definiciones de clase están diseñados para entrar en los archivos que se incluyen por varios módulos de código fuente. C ++ tiene que saber en cuál de esos archivos fuente .cpp para asignar espacio para la variable estática. Esto no es un problema con las variables no estáticos porque el espacio se asigna en cada objeto creado.




» » » » Cómo utilizar miembros estáticos en c ++