C ++: utiliza para miembros de datos estáticos

Video: Estructura de datos Pila Estatica C/C++

miembros de datos estáticos tienen usos incontables en C ++, pero aquí son sólo unos pocos. En primer lugar, puede utilizar miembros estáticos de llevar la cuenta del número de objetos que flotan alrededor.

Video: Tres tipos de web: estático, dinámico, bases de datos

Recuerde, sin embargo, que esta cuenta refleja el número de Estudiante objetos (incluidos los temporales) y no necesariamente el número de alumnos.

Un uso estrechamente relacionados por un miembro estático es como una bandera para indicar si se ha producido una acción particular. Por ejemplo, una clase Radio puede ser necesario para inicializar el hardware antes de enviar el primer melodía de comandos, pero no antes de la posterior melodías. Una bandera que indica que esta es la primera melodía es sólo el billete. Esto incluye abanderamiento cuando se ha producido un error.

Otro uso común es el de proporcionar un espacio para el puntero al primer elemento de una lista - el denominado puntero de cabeza. Los miembros estáticos pueden asignar los bits de datos común que todos los objetos de todas las funciones de acción (el uso excesivo de esta memoria común es realmente una mala idea ya que al hacerlo hace que los errores de seguimiento difícil).

Observe cómo la función miembro estática número() puede acceder al miembro de datos estáticos noOfStudents. De hecho, ese es el único miembro de la clase que se puede acceder - una función miembro estática no está asociado con ningún objeto. ¿Estaba usted declare nombre() a ser estática, que podría referirse a Nombre del estudiante(), lo que sería una petición de inmediato la pregunta: “¿Qué nombre?”

Video: Tres tipos de web: estático, dinámico, bases de datos

El siguiente fragmento es sólo un caso en el que un método estático puede referirse directamente a un miembro no estático:

Estudiante clase {public: static int elementsInName () {int sizeOfArray = sizeof (nombre) -Retorno sizeOfArray / sizeof (char) -} protegido: char nombre [MAX_NAME_SIZE] -} -

Aquí el método estático elementsInName () se refiere a nombre sin hacer referencia a ningún objeto. Esto no era legal antes de la norma 2011. Está permitido ahora porque el tamaño de nombre es el mismo para todos los objetos. Por lo tanto, no importa cuál es el objeto que se refieren a.

Video: errores estaticos y dinamicos.mov

Usted puede preguntarse por qué sizeof (nombre) fue dividido por sizeof (char). los sizeof (nombre) devuelve el número de bytes en el nombre de la matriz. Pero lo que quiere es el número de elementos en nombre, así que hay que dividir por el tamaño de cada elemento de nombre.

Pero no es sizeof (char) igual a 1? Bueno, tal vez, pero tal vez no. la división de la tamaño de la matriz por la tamaño de un solo elemento siempre funciona para todos los tipos de matriz.

Artículos Relacionados