Operator Overloading in C++

Operator Overloading in C++

1. When an operator is overloaded with multiple jobs, it is known as operator overloading.

2. Operator overloading is a way to implement compile time polymorphism.

3. Any symbol can be used as function name if
(a.) if it is a valid operator in C language.
(b.) if it is preceded by operator keyword.

4. We cannot overload sizeof operator and ternary (?:) operator.


For Example:-

#include<iostream>
using namespace std;
class Complex
{
private:
int real, imaginary;

public:
void setData(int num1, int num2)
{
real = num1;
imaginary = num2;
}

void showData()
{
cout<< real << " " << imaginary;
}

Complex operator+(Complex C) //operator overloading of + symbol.
{
Complex temp;
temp.real = real+C.real;
temp.imaginary = imaginary+C.imaginary;
return temp;
}
};

int main()
{
Complex C1,C2,C3;
C1.setData(3,4);
C2.setData(5,6);
C3 = C1+C2; //calling operator overloading.
C3.showData();
}

Overloading of Unary Operator

Operator which takes only one operand to perform operation is called unary operator. To know more about different types of operator, you should check this >> Operators

Unary operator can be overloaded as follows.


For Example:-

#include<iostream>
using namespace std;
class Complex
{
private:
int real, imaginary;

public:
void setData(int num1, int num2)
{
real = num1;
imaginary = num2;
}

void showData()
{
cout<< real << " " << imaginary;
}

Complex operator-() //operator overloading of unary operator -.
{
Complex temp;
temp.real = -real;
temp.imaginary = -imaginary;
return temp;
}
};

int main()
{
Complex C1,C2;
C1.setData(9,2);
C2 = -C1; //C2=c1.operator-() calling unary operator overloading.
C2.showData();
}


Pre and Post increment Operator Overloading

The symbol of prefix (++i) and postfix (i++) operator is same so we need to use a dummy int as parameter in postfix version to distinguish between the two functions definition.


For Example:-

#include<iostream>
using namespace std;
class Integer
{
private:
int num;

public:
void setData(int a)
{
num = a;
}

void showData()
{
cout<<"\n integer is: "<<num;
}

Integer operator++() //preincrement operator overloading.
{
Integer i;
i.num = ++num;
return i;
}

Integer operator++(int) //postincrement operator overloading.
{
Integer i;
i.num = num++;
return i;
}
};

int main()
{
Integer i1, i2;
i1.setData(55);
i1.showData();
i2 = i1++; //i2=i1.operator++()
i2.showData();
i2 = ++i1;
i2.showData();
}

For more information: Operator overloading as a friend function, overloading of unary operator as a friend function, insertion and extraction operator overloading. 



<< Previous                                                                                      Next >>
Previous
Next Post »