Latest web development tutorials

Les membres statiques de classes C ++

Classe C ++ & Objets Classe C ++ & Objets

Nous pouvons utiliser le mot - cléstatique pour les membres de la classe est définie comme statique.Lorsque nous déclarons un membre de la classe est statique, ce qui signifie que peu importe combien de classes d'objets créés, les membres statiques ont une seule copie.

Les membres statiques dans toutes les classes d'objets sont partagés. Si n'existe pas lorsque le premier objet est créé déclaration autre d'initialisation, toutes les données statiques seront initialisées à zéro. Nous ne pouvons pas avoir lieu dans la définition d'un membre statique de la classe, mais la classe peut être résolu à l' extérieur en utilisant l'opérateur d'intervalle:: re-déclarer une variable statique de sorte qu'il est initialisé, comme le montre l'exemple suivant.

Les exemples suivants permettent de mieux comprendre le concept de membres de données statiques:

#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;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

Constructor called.
Constructor called.
Total objects: 2

fonction membre statique

Si la fonction est déclarée en tant que membre statique, vous pouvez mettre une classe particulière des fonctions d'objet et d'ouvrir un indépendant. Même les fonctions membres statiques peuvent également être invoqués dans le cas de l'objet de classe n'existe pas, aussi longtemps que lafonction statique en utilisant le nom de la classe ainsi que l'opérateur de résolution de portée ::accès.

fonctions membres statiques ne peuvent accéder à des membres de données statiques, ne peuvent pas accéder à d'autres fonctions et d'autres fonctions membres statiques en dehors de la classe.

fonction membre statique a une gamme de classes, ils ne peuvent pas accéder à ce type de pointeur. Vous pouvez utiliser une fonction membre statique pour déterminer si une certaine classe d'objet a été créé.

Les exemples suivants permettent de mieux comprendre le concept d'une fonction de membre statique:

#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;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

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

Classe C ++ & Objets Classe C ++ & Objets