Programación D - este puntero

Cada objeto en D tiene acceso a su propia dirección a través de un puntero importante llamado thispuntero. losthispuntero es un parámetro implícito para todas las funciones miembro. Por lo tanto, dentro de una función miembro, esto puede usarse para referirse al objeto que invoca.

Probemos con el siguiente ejemplo para comprender el concepto de este puntero:

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

      int compare(Box box) { 
         return this.Volume() > box.Volume(); 
      }

   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 
   
   if(Box1.compare(Box2)) { 
      writeln("Box2 is smaller than Box1"); 
   } else { 
      writeln("Box2 is equal to or larger than Box1"); 
   }
}

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

Constructor called. 
Constructor called. 
Box2 is equal to or larger than Box1