Latest web development tutorials

Los miembros estáticos de clases de C ++

Clase C ++ y objetos Clase C ++ y objetos

Podemos utilizar la palabra clavestatic para los miembros de la clase se define como estática.Cuando declaramos un miembro de la clase es estática, lo que significa que no importa cuántas clases de objetos creados, los miembros estáticos tienen sólo una copia.

Los miembros estáticos en todas las clases de objetos se comparten. Si no existe otra declaración de inicialización cuando se crea el primer objeto, todos los datos estáticos se inicializan a cero. No podemos llevar a cabo en la definición de un miembro estático de la clase, pero la clase se puede resolver externamente mediante el operador de rango:: volver a declarar una variable estática por lo que se ha inicializado, como se muestra en el siguiente ejemplo.

Los ejemplos siguientes ayudan a comprender mejor el concepto de miembros de datos estáticos:

#include <iostream>
 
using namespace std;

class Box
{
   public:
      static int objectCount;
      // 构造函数定义
      Box(double l=2.0, double b=2.0, double h=2.0)
      {
         cout <<"Constructor called." << endl;
         length = l;
         breadth = b;
         height = h;
         // 每次创建对象时增加 1
         objectCount++;
      }
      double Volume()
      {
         return length * breadth * height;
      }
   private:
      double length;     // 长度
      double breadth;    // 宽度
      double height;     // 高度
};

// 初始化类 Box 的静态成员
int Box::objectCount = 0;

int main(void)
{
   Box Box1(3.3, 1.2, 1.5);    // 声明 box1
   Box Box2(8.5, 6.0, 2.0);    // 声明 box2

   // 输出对象的总数
   cout << "Total objects: " << Box::objectCount << endl;

   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Constructor called.
Constructor called.
Total objects: 2

la función miembro

Si la función se declara como miembro estático, se puede poner cualquier clase particular de funciones de objeto y de abrir un independiente. Incluso las funciones miembro estáticas también pueden ser invocadas en el caso de la clase de objeto que no existe, siempre y cuando lafunción estática usando el nombre de la clase más el operador de resolución de alcance ::acceso.

métodos estáticos sólo pueden acceder los miembros de datos estáticos, no pueden acceder a otras funciones y otros métodos estáticos fuera de la clase.

la función miembro tiene una serie de clases, no pueden acceder a este tipo de puntero. Puede utilizar un método estático para determinar si una determinada clase de objeto ha sido creado.

Los siguientes ejemplos ayudan a entender mejor el concepto de una función miembro estática:

#include <iostream>
 
using namespace std;

class Box
{
   public:
      static int objectCount;
      // 构造函数定义
      Box(double l=2.0, double b=2.0, double h=2.0)
      {
         cout <<"Constructor called." << endl;
         length = l;
         breadth = b;
         height = h;
         // 每次创建对象时增加 1
         objectCount++;
      }
      double Volume()
      {
         return length * breadth * height;
      }
      static int getCount()
      {
         return objectCount;
      }
   private:
      double length;     // 长度
      double breadth;    // 宽度
      double height;     // 高度
};

// 初始化类 Box 的静态成员
int Box::objectCount = 0;

int main(void)
{
  
   // 在创建对象之前输出对象的总数
   cout << "Inital Stage Count: " << Box::getCount() << endl;

   Box Box1(3.3, 1.2, 1.5);    // 声明 box1
   Box Box2(8.5, 6.0, 2.0);    // 声明 box2

   // 在创建对象之后输出对象的总数
   cout << "Final Stage Count: " << Box::getCount() << endl;

   return 0;
}

Cuando el código se compila y ejecuta, produce los siguientes resultados:

Inital Stage Count: 0
Constructor called.
Constructor called.
Final Stage Count: 2

Clase C ++ y objetos Clase C ++ y objetos