The
operator keyword is used to overload a built-in operator or to
provide a user-defined conversion in a class or struct declaration.

**Example:**The following example overloads the

**+**and

*****operators to perform fractional addition and multiplication, and also provides a conversion operator that converts a Fraction type to a double type.

class
Fraction

{

int
iNum, iDen;

public
Fraction(int
iNum, int
iDen)

{

this.iNum
= iNum;

this.iDen
= iDen;

}

//
overload operator +

public
static
Fraction

**operator****+**(Fraction x, Fraction y)
{

return
new
Fraction(x.iNum
* y.iDen + y.iNum * x.iDen, x.iDen * y.iDen);

}

//
overload operator *

public
static
Fraction

**operator*******(Fraction x, Fraction y)
{

return
new
Fraction(x.iNum
* y.iNum, x.iDen * y.iDen);

}

//
user-defined conversion from Fraction to double

public
static

**implicit****operator****double**(Fraction oFraction)
{

return
(double)oFraction.iNum
/ oFraction.iDen;

}

}

class
Test

{

static
void
Main()

{

Fraction
x = new
Fraction(1,
2);

Fraction
y = new
Fraction(3,
7);

Fraction
z = new
Fraction(2,
3);

Console.WriteLine((double)(x
* y + z));

}

}

/*Output:
0.880952380952381*/

Nice post very helpful

ReplyDeleteDBAKings