Programmation D - Pointeur vers les classes

Un pointeur vers une classe D se fait exactement de la même manière qu'un pointeur vers une structure et pour accéder aux membres d'un pointeur vers une classe, vous utilisez l'opérateur d'accès aux membres -> opérateur, tout comme vous le faites avec des pointeurs vers des structures. De même, comme pour tous les pointeurs, vous devez initialiser le pointeur avant de l'utiliser.

Essayons l'exemple suivant pour comprendre le concept de pointeur vers une classe -

import std.stdio;

class Box { 
   public: 
      // Constructor definition 
      this(double l = 2.0, double b = 2.0, double h = 2.0) { 
         writeln("Constructor called."); 
         length = l; 
         breadth = b; 
         height = h; 
      }

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

   private: 
      double length;     // Length of a box 
      double breadth;    // Breadth of a box 
      double height;     // Height of a box 
}

void main() { 
   Box Box1 = new Box(3.3, 1.2, 1.5);    // Declare box1 
   Box Box2 = new Box(8.5, 6.0, 2.0);    // Declare box2 
   Box *ptrBox;                // Declare pointer to a class.
   
   // Save the address of first object 
   ptrBox = &Box1; 
   
   // Now try to access a member using member access operator 
   writeln("Volume of Box1: ",ptrBox.Volume()); 
   
   // Save the address of first object 
   ptrBox = &Box2;  
   
   // Now try to access a member using member access operator 
   writeln("Volume of Box2: ", ptrBox.Volume()); 
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Constructor called. 
Constructor called. 
Volume of Box1: 5.94 
Volume of Box2: 102