Latest web development tutorials

Статические члены классов C ++

Класса C ++ и объекты Класса C ++ и объекты

Мы можем использоватьстатический ключевое слово для членов класса определяется как статические.Когда мы объявляем член класса является статическим, что означает, что независимо от того, сколько классов объектов, созданных, статические члены имеют только одну копию.

Статические члены во всех классах объектов являются общими. Если другой инициализации оператор не существует, когда создается первый объект, все статические данные будут инициализируется нулем. Мы не можем иметь место в определении статического члена класса, но класс может быть решена извне с помощью оператора диапазона:: повторно объявить статическую переменную , так она инициализируется, как показано в следующем примере.

Следующие примеры помогают лучше понять концепцию статических элементов данных:

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

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

Constructor called.
Constructor called.
Total objects: 2

Статическая функция-член

Если функция объявлена ​​как статический член, вы можете поместить любой конкретный класс функций объекта и открыть независимый. Даже статические функции - члены могут также быть использовано в случае объекта класса не существует, до тех пор , какстатической функции , используя имя класса плюс оператор разрешения области видимости ::для доступа.

Статические функции-члены могут получить доступ только статические элементы данных, не могут получить доступ к другим функциям и другие статические функции вне класса.

Статическая функция член имеет целый ряд классов, они не могут получить доступ к этот тип указателя. Вы можете использовать статическую функцию-член, чтобы определить, был ли создан определенный класс объектов.

Следующие примеры помогают лучше понять концепцию статической функции-члена:

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

Когда приведенный выше код компилируется и выполняется, он дает следующие результаты:

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

Класса C ++ и объекты Класса C ++ и объекты