В следующей таблице показан список унарных операторов и их назначение.
Имя функции | Оператор | Назначение |
---|---|---|
opUnary | - | Отрицание (числовое дополнение) |
opUnary | + | Такое же значение (или, копия) |
opUnary | ~ | Побитовое отрицание |
opUnary | * | Доступ к содержимому указателя |
opUnary | ++ | Увеличение на единицу |
opUnary | -- | Уменьшение на единицу |
Ниже приведен пример, в котором показана перегрузка унарного оператора.
import std.stdio; class Box { public: double getVolume() { return length * breadth * height; } void setLength( double len ) { length = len; } void setBreadth( double bre ) { breadth = bre; } void setHeight( double hei ) { height = hei; } Box opUnary(string op)() { if(op == "++") { Box box = new Box(); box.length = this.length + 1; box.breadth = this.breadth + 1 ; box.height = this.height + 1; return box; } } private: double length; // Длина коробки double breadth; // Ширина коробки double height; // Высота коробки }; // Основная функция программы void main( ) { Box box1 = new Box(); // Объявление box1 типа Box Box box2 = new Box(); // Объявление box2 типа Box double volume = 0.0; // Здесь хранится объём коробки // Спецификация box 1 box1.setLength(6.0); box1.setBreadth(7.0); box1.setHeight(5.0); // объём box 1 volume = box1.getVolume(); writeln("Объём box1 : ", volume); // Увеличение объекта: box2 = ++box1; // объём box2 volume = box2.getVolume(); writeln("Объём box2 : ", volume); }
Когда вы скомпилируете и выполните эту программу, она возвратит следующий результат:
Объём box1 : 210 Объём box2 : 336