Указатели на классы в D


Предыдущая страница
Следующая страница  

Указатель на класс в D работает точно так же, как указатель на структуру, и для доступа к элементам класса вы используете оператор доступа точка (.), так же, как и для указателей на структуры. Также как и со всеми указателями, вы должны его инициализировать перед использованием.

Попробуем следующий пример, чтобы понять концепцию указателя на класс:

import std.stdio;

class Box { 
   public: 
      // Объявление конструктора 
      this(double l = 2.0, double b = 2.0, double h = 2.0) { 
         writeln("Вызван конструктор."); 
         length = l; 
         breadth = b; 
         height = h; 
      }

      double Volume() { 
         return length * breadth * height; 
      } 

   private: 
      double length;     // Длина коробки 
      double breadth;    // Ширина коробки 
      double height;     // Высота коробки 
}

void main() { 
   Box box1 = new Box(3.3, 1.2, 1.5);    // Объявление box1 
   Box box2 = new Box(8.5, 6.0, 2.0);    // Объявление box2 
   Box *ptrBox;                // Объявление указателя на класс.
   
   // Сохранить адрес первого объекта 
   ptrBox = &box1; 
   
   // Теперь пробуем обратиться к члену, используя оператор доступа 
   writeln("Объём box1 : ", ptrBox.Volume()); 
   
   // Сохранить адрес второго объекта 
   ptrBox = &box2;  
   
   // Теперь пробуем обратиться к члену, используя оператор доступа 
   writeln("Объём box2: ", ptrBox.Volume()); 
} 

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

Вызван конструктор.
Вызван конструктор.
Объём box1 : 5.94
Объём box2: 102

Предыдущая страница
Следующая страница