Unary Operators Overloading

Unary Operators Overloading

This topic is about Unary Operators Overloading.

The following table shows the list of unary operators and its purpose.

Function NameOperatorPurpose
opUnaryNegative of (numeric complement of)
opUnary+The same value as (or, a copy of)
opUnary~Bitwise negation
opUnary*Access to what it points to
opUnary++Increment
opUnaryDecrement

An example is shown below which explains how to overload an binary operator.

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;      // Length of a box 
      double breadth;     // Breadth of a box 
      double height;      // Height of a box 
}; 

// Main function for the program 
void main( ) { 
   Box Box1 = new Box();    // Declare Box1 of type Box 
   Box Box2 = new Box();    // Declare Box2 of type Box 
   double volume = 0.0;     // Store the volume of a box here 
   
   // box 1 specification 
   Box1.setLength(6.0); 
   Box1.setBreadth(7.0); 
   Box1.setHeight(5.0);
   
   // volume of box 1 
   volume = Box1.getVolume(); 
   writeln("Volume of Box1 : ", volume); 
   
   // Add two object as follows: 
   Box2 = ++Box1;
   
   // volume of box2 
   volume = Box2.getVolume(); 
   writeln("Volume of Box2 : ", volume);  
}

When the above code is compiled and executed, it produces the following result −

Volume of Box1 : 210 
Volume of Box2 : 336

In this topic we learned about Unary Operators Overloading. To know more, Click Here.

This Post Has 2 Comments

Leave a Reply