Latest web development tutorials

Statische Elemente von C ++ Klassen

C ++ Klasse & Objekte C ++ Klasse & Objekte

Wir können das Schlüsselwortstatic in die Klassenmitglieder verwenden wird als statisch definiert.Wenn wir ein Mitglied der Klasse deklarieren ist statisch, was bedeutet, dass, egal wie viele Klassen von Objekten erstellt, statische Elemente nur eine Kopie haben.

Statische Mitglieder in allen Klassen von Objekten gemeinsam genutzt werden. Wenn andere der Initialisierung Anweisung existiert nicht, wenn das erste Objekt erstellt wird, werden alle statischen Daten auf Null initialisiert werden. Wir können nicht in die Definition eines statischen Element der Klasse nehmen, aber die Klasse kann unter Verwendung des Bereichsoperator extern gelöst werden:: um eine statische Variable neu deklarieren , damit es initialisiert wird, wie im folgenden Beispiel gezeigt.

Die folgenden Beispiele helfen, besser das Konzept der statischen Datenelemente zu verstehen:

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

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

Constructor called.
Constructor called.
Total objects: 2

Statische Member-Funktion

Wenn die Funktion als statisches Element deklariert ist, können Sie eine bestimmte Klasse von Objektfunktionen setzen und eine unabhängige zu öffnen. Auch statische Elementfunktionen können auch im Falle des Klassenobjekts aufgerufen werden , nicht vorhanden ist , solange diestatische Funktion den Klassennamen und den Bereichsauflösungsoperator ::zugänglich.

Statische Member-Funktionen können nur statische Datenelemente zugreifen können, kann nicht auf andere Funktionen und andere statische Member-Funktionen außerhalb der Klasse.

Statische Member-Funktion eine Reihe von Klassen hat, können sie nicht diese Art von Zeiger zuzugreifen. Sie können eine statische Member-Funktion verwenden, um zu bestimmen, ob eine bestimmte Objektklasse erstellt wurde.

Die folgenden Beispiele helfen, besser das Konzept einer statischen Member-Funktion zu verstehen:

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

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt es die folgenden Ergebnisse:

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

C ++ Klasse & Objekte C ++ Klasse & Objekte