Каждый объект в D имеет доступ к собственному адресу через важный указатель, с именем this. Этот указатель является неявным параметром для всех функций-членов. Поэтому внутри функции-члена this может использоваться как ссылка на вызывающий объект.
Попробуем следующий пример, чтобы понять идею указателя this:
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; } int compare(Box box) { return this.Volume() > box.Volume(); } 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 if(box1.compare(box2)) { writeln("box2 меньше, чем box1"); } else { writeln("box2 равна или больше, чем box1"); } }
Когда вы скомпилируете и выполните эту программу, она возвратит следующий результат:
Вызван конструктор. Вызван конструктор. box2 равна или больше, чем box1