miembros de la clase 1.static
C ++ dentro de imprimación dijo, miembros de la clase a diferencia de los miembros de datos estáticos de la clase ordinaria, los miembros de datos estáticos de la clase independiente de todos los objetos de la clase. miembros de datos de clase estática se asocian con la clase,
Pero el objeto no tiene ninguna relevancia para la definición de la clase. Eso no es como una ordinaria miembros de datos estáticos de clase, ya que cada objeto tiene una clase, toda clase de objeto es un miembros de la clase estática compartidos.
Un ejemplo modificado de la clase de objeto a un miembro estático, el miembro estático del valor de clase del objeto correspondiente al objeto B es también 1.
miembros de la clase estática no ocupan objeto espacial
#include <iostream> el uso de espacio de nombres std; clase A { público : A () {} ~ A () {} privada : static int x; // static int x = 1;错误estática void M_DATA ( int a) {x = a; } }; int A :: x = 1 ; int main () { A my_class; cout << sizeof (my_class) << endl; volver 0 ; }
Nota: objeto de la clase estática debe ser inicializado fuera de la clase
clase del texto { público : static int COUNT; }; int el Texto :: count = 0 ; // con las variables miembro estática debe ser inicializado int main () { T1 texto; COUT << t1.count << endl; retorno 0 ; } // salida del programa 0
variables estáticas modificados antes de que el objeto existe, por lo que las variables estáticas a ser modificados fuera de la inicialización de la clase. Dado que las variables estáticas son compartidos por todos los objetos deben ser mejores que los objetos preexistentes.
clase del Texto { público : static int COUNT; }; int el Texto :: COUNT = 0 ; // con las variables miembro estático debe ser inicializado int main () { el T1 texto; la T2 texto; t1.count = 100 ; // T1 a los objetos miembros estáticos para contar 100 t2.count tribunal << << endl; // cuando se imprime el objeto de un miembro estático t2, la pantalla 100 no es 0 retorno 0 ; }
funciones miembro de clase 2.Static
Dado que los miembros de la clase estáticos modificados pertenecen a la clase, no están cubiertos, así que no hay funciones miembro de clase estático de este puntero, este puntero es un puntero que apunta a este objeto. Debido a que no existe este puntero, la función miembro
No se puede acceder miembro de la clase no estática se puede acceder a los miembros estáticos de clase única modificados.
clase del texto { público : static int Diversión () { retorno NUM; } static int COUNT; int NUM; }; int el Texto :: = COUNT . 5 ; // con las variables miembro estático se debe inicializar int main () { T1 texto; el texto T2; t1.num = 100 ; t1.fun (); // se produjo un error, diversión no estático función miembro de la clase si el recuento de retorno devolvería el correcto retorno 0 ; }
Llamar al método:
(1) objeto de la clase llamando
(2) llamando el nombre de clase
# include <iostream la> el uso de espacio de nombres de enfermedades de transmisión sexual; la clase de la cuenta { público : estática doble m_rate; // declaración: clase de objeto independiente estática vacío set_rate ( const doble y X) { m_rate = X; } }; Doble la Cuenta :: = m_rate 1,0 ; // configurar la inicialización, establecer el valor inicial (definida: la obtención de la memoria) int main () { la cuenta :: set_rate ( 5,0 ); // nombre de la clase llamando cout << cuenta :: m_rate << endl; A la Cuenta; a.set_rate ( 7,0 ); // objeto para llamar a una función miembro estática, el compilador ya no se añadirá a los parámetros de este indicador, la operación implícita tribunal << << m_rate la Cuenta :: endl; retorno 0 ; }