Latest web development tutorials

I membri statici di classi C ++

C ++ Class & Objects C ++ Class & Objects

Possiamo usare la parola chiavestatic per i membri della classe è definita come statica.Quando si dichiara un membro della classe è statica, il che significa che non importa quante classi di oggetti creati, i membri statici hanno una sola copia.

I membri statici in tutte le classi di oggetti sono in comune. Se dichiarazione altra di inizializzazione non esiste quando si crea il primo oggetto, tutti i dati statici verranno inizializzati a zero. Non possiamo avere luogo nella definizione di un membro statico della classe, ma la classe può essere risolto esternamente utilizzando l'operatore gamma:: ri-dichiarare una variabile statica così è inizializzato, come mostrato nel seguente esempio.

Gli esempi che seguono aiutano a comprendere meglio il concetto di membri di dati statici:

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

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

Constructor called.
Constructor called.
Total objects: 2

funzione di membro static

Se la funzione è dichiarata come membro statico, si può inserire qualsiasi particolare classe di funzioni degli oggetti e di aprire un indipendente. Anche le funzioni membro statiche può essere richiamato nel caso dell'oggetto di classe non esiste, finché lafunzione statica utilizzando il nome della classe più l'operatore di risoluzione dell'ambito ::accesso.

funzioni membro statiche possono accedere solo i membri dati statici, non possono accedere ad altre funzioni e altre funzioni membro statiche di fuori della classe.

funzione di membro static ha una gamma di classi, non possono accedere a questo tipo di puntatore. È possibile utilizzare una funzione di membro static per determinare se una certa classe oggetto è stato creato.

I seguenti esempi aiutano a comprendere meglio il concetto di una funzione membro static:

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

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

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

C ++ Class & Objects C ++ Class & Objects