[Resumen de aprendizaje de análisis profundo de C ++] 25 tipos de variables miembro estáticas
1. Variables miembro
- Puede acceder a las variables miembro públicas por nombre de objeto
- Las variables miembro de cada objeto son únicas.
- Las variables miembro no se pueden compartir entre objetos
2. Nueva demanda
- Cuente el número de objetos de una clase determinada durante la ejecución del programa.
- Garantizar la seguridad del programa (no se pueden usar variables globales)
- El número de objetos actuales se puede obtener en cualquier momento.
Intento de solución (solución fallida)
#include <stdio.h>
class Test
{
private:
int mCount;
public:
Test() : mCount(0)
{
mCount++;
}
~Test()
{
--mCount;
}
int getCount()
{
return mCount;
}
};
Test gTest;
int main()
{
Test t1;
Test t2;
printf("count = %d\n", gTest.getCount());
printf("count = %d\n", t1.getCount());
printf("count = %d\n", t2.getCount());
return 0;
}
3. Variables miembro estáticas: comenzar a introducir nuevos conceptos
en C ++ puede definir variables miembro estáticas
- Las variables miembro estáticas pertenecen a toda la clase.
- La vida útil de las variables miembro estáticas no depende de ningún objeto.
- Puede acceder directamente a las variables miembro estáticas públicas por nombre de clase
- Variables miembro estáticas de todos los objetos que comparten clases
- Se puede acceder a las variables miembro estáticas públicas por nombre de objeto
Características de las variables miembro estáticas.
- Modificado directamente por la palabra clave estática en el momento de la definición
- Las variables miembro estáticas deben asignarse por separado fuera de la clase
- Las variables miembro estáticas se encuentran en el área de datos global dentro del programa
Reglas gramaticales:
- Escriba ClassName :: VarName = value;
Uso de variables miembro estáticas
#include <stdio.h>
class Test
{
private:
static int cCount;
public:
Test()
{
cCount++;
}
~Test()
{
--cCount;
}
int getCount()
{
return cCount;
}
};
int Test::cCount = 0; //需要在类的外部单独定义,隶属于test
Test gTest;
int main()
{
Test t1;
Test t2;
printf("count = %d\n", gTest.getCount());
printf("count = %d\n", t1.getCount());
printf("count = %d\n", t2.getCount());
Test* pt = new Test(); //指向堆上的一个指针对象,动态生成,触发构造函数就 ++,输出为4
printf("count = %d\n", pt->getCount());
delete pt;
printf("count = %d\n", gTest.getCount());
return 0;
}
Resumen
Las variables miembro estáticas se pueden definir a través de la clave estática en la clase.
Las variables miembro estáticas pertenecen a todas las clases.
Cada objeto puede acceder a las variables miembro estáticas.
Las variables miembro estáticas se asignan en el área de datos global
. La vida de las variables miembro estáticas es el tiempo de ejecución del programa