Latest web development tutorials

Statyczne członkowie klasy C ++

C ++ klasy i obiekty C ++ klasy i obiekty

Możemy użyć słowa kluczowegostatic członkom klasa jest zdefiniowana jako statyczna.Kiedy zadeklarować członkiem klasy jest statyczne, co oznacza, że ​​bez względu na to, ile klas obiektów tworzone członkowie statyczne mają tylko jedną kopię.

Statyczne członkowie we wszystkich klasach obiektów są wspólne. If inne inicjalizacji nie istnieje, gdy pierwszy obiekt jest tworzony, wszystkie dane statyczne zostaną zainicjowane do zera. Nie może odbywać się w definicji statycznego członka klasy, ale klasa może być rozwiązany na zewnątrz za pomocą operatora zakres:: ponownie zadeklarować zmiennej statycznej więc jest inicjowana, jak pokazano na poniższym przykładzie.

Poniższe przykłady pomagają lepiej zrozumieć pojęcie statycznymi członkami danych:

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

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

Constructor called.
Constructor called.
Total objects: 2

Statyczna funkcja składowa

Jeśli funkcja jest zadeklarowana jako członka statycznego, można umieścić dowolną szczególną klasę funkcji obiektów i otworzyć niezależny. Nawet statyczne funkcje składowe mogą być wywoływane w przypadku obiektu klasy nie istnieje, tak długo, jakfunkcja statycznego za pomocą nazwy klasy plus operatora zakres rozdzielczości ::do dostępu.

Statyczne funkcje składowe mają dostęp tylko statyczne członków danych, nie można uzyskać dostęp do innych funkcji i inne statyczne funkcje składowe poza klasą.

Statyczna funkcja składowa zawiera szereg klas, nie może uzyskać dostępu do tego typu wskaźnika. Można użyć statycznej funkcji składowej w celu określenia, czy dany obiekt klasy został stworzony.

Poniższe przykłady pomagają lepiej zrozumieć pojęcie statycznej funkcji składowej:

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

Gdy powyższy kod jest kompilowany i wykonany, że daje następujące wyniki:

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

C ++ klasy i obiekty C ++ klasy i obiekty