Operartor Overloading
Operartor Overloading
Distance:
#include<iostream>
using namespace std;
#include<string.h>
struct Distance
{
int feet,inch;
//setter function
//getter function
int getFeet()
{
return this -> feet;
}
int getInch()
{
return this -> inch;
}
//display function
// Addition.
Distance operator+ ( Distance c2) // Member Function
{
cout << "\n****** Addition of d1 and d2 ******" ;
Distance temp;
temp.feet = this -> feet + c2.feet;
temp.inch = this -> inch + c2.inch;
return temp;
}
return temp;
}
// Substraction
return temp;
}
return temp;
}
// Multiplication
return temp;
}
return temp;
}
// Division
return temp;
}
return temp;
}
Distance operator+(int,Distance);
Distance operator-(int,Distance);
Distance operator*(int,Distance);
Distance operator/(int,Distance);
int main()
{
Distance d1; //created d1 object
d1.display(); //display function call
int fe,in;
d1.setFeet(fe); //d1.feet=12;
d1.setInch(in); //d1.inch=9;
d1.display(); //display(&d1);
// Add
Distance d3; //object Created
d3 = d1 + d2 ; //d3 = d1.operator+(d2);
d3.display();
Distance d5;
cout << "\n****** Addition of 10 and d1 ******";
d5 = 10 - d1 ; //d5 = operator+(10,d1);
d5.display();
//sub
Distance d8;
cout << "\n****** Substraction of 10 and d1 ******";
d8 = 10 - d1 ; //d8 = operator-(10,d1);
d8.display();
//mul
Distance d11;
cout << "\n****** Multiplication of 10 and d1 ******";
d11 = 10 * d1 ; //d11 = operator*(10,d1);
d11.display();
//operator/
Distance d14;
cout << "\n****** Division of 10 and d1 ******";
d14 = 10 / d1 ; //d14 = operator/(10,d1);
d14.display();
return 0;
}
// Outside main
// Add
temp.setFeet(feet); //setter
temp.setInch(inch);
return temp;
// Sub
temp.setFeet(feet); //setter
temp.setInch(inch);
return temp;
// Mul
temp.setFeet(feet); //setter
temp.setInch(inch);
return temp;
// Div
temp.setFeet(feet); //setter
temp.setInch(inch);
return temp;
}
// 2.Complex:
#include<iostream>
using namespace std;
#include<string.h>
struct Complex
{
int real,imag;
int getReal()
{
return this -> real;
}
int getImag()
{
return this -> imag;
}
// Addition.
return temp;
}
return temp;
}
// Substraction
return temp;
}
return temp;
}
// Multiplication
return temp;
}
return temp;
}
// Division
return temp;
}
return temp;
}
}; // Struct ends here
Complex operator+(int,Complex);
Complex operator-(int,Complex);
Complex operator*(int,Complex);
Complex operator/(int,Complex);
int main()
{
Complex c1; // object created
int real, imagine;
c1.display();
c1.setReal(real);
c1.setImag(imagine);
cout << "\nValues of C1" ;
c1.display();
// parameterised
// Add
Complex c5;
cout << "\n****** Addition of 10 and c1 ******";
c5 = 10 + c1 ; // operator+(10,c1); ...non member
c5.display();
//Sub
Complex c8;
cout << "\n****** Substraction of 10 and c1 ******";
c8 = 10 - c1 ; //c8 = operator-(10,c1);
c8.display();
//Mul
Complex c11;
cout << "\n****** Multiplication of 10 and c1 ******";
c11 = 10 * c1 ; //c11 = operator*(10,c1);
c11.display();
//Div
Complex c14;
cout << "\n****** Division of 10 and c1 ******";
c14 = 10 / c1 ; //c14 = operator/(10,c1);
c14.display();
return 0;
}
// Outside main
// Add
temp.setReal(real); //setter
temp.setImag(imag);
return temp;
// Sub
temp.setReal(real); //setter
temp.setImag(imag);
return temp;
// Mul
temp.setReal(real); //setter
temp.setImag(imag);
return temp;
}
// Div
temp.setReal(real); //setter
temp.setImag(imag);
return temp;
}
// 1.Complex:
#include<iostream>
using namespace std;
#include<string.h>
struct Complex
{
int real,imag;
int getReal()
{
return this -> real;
}
int getImag()
{
return this -> imag;
}
// Greater
// Smaller
// Equal to Equal to
// Not Equal to
int main()
{
Complex c1; // object created
int real, imagine;
c1.display();
c1.setReal(real);
c1.setImag(imagine);
cout << "\nValues of C1" ;
c1.display();
// parameterised
// Greater
// A}
int c3 = c1 > c2; //c3 = c1.operator>(c2);
if( c3 == 1)
{
cout << "\nc1 is greater" ;
}
else
{
cout << "\nc2 is greater" ;
}
// B}
//C}
int c11 = 10 > c1 ;
// Smaller
// A}
int c5 = c1 < c2; //c5 = c1.operator>(c2);
if( c5 == 1)
{
cout << "\nc1 is smaller" ;
}
else
{
cout << "\nc2 is smaller" ;
}
// B)
//C}
// Equal to Equal to
// A}
// B}
//C}
int c13 = 10 > c1 ;
// Not Equal to
// A}
// B}
//C}
return 0;
//setter function
//getter function
int getFeet()
{
return this -> feet;
}
int getInch()
{
return this -> inch;
}
//display function
// Greater
int operator > ( Distance d2) // Member Function
{
int flag = 0 ;
if(this->feet > d2.feet)
{
flag = 1;
}
else
{
flag = 0;
}
return flag ;
}
// Smaller
// Equal to Equal to
// Not Equal to
int main()
{
Distance d1; //created d1 object
d1.display(); //display function call
int fe,in;
d1.setFeet(fe); //d1.feet=12;
d1.setInch(in); //d1.inch=9;
cout << "\nValues of D1" ;
d1.display(); //display(&d1);
// Greater
// A}
int d3 = d1 > d2; //d3 = d1.operator>(d2);
if( d3 == 1)
{
cout << "\nd1 is greater" ;
}
else
{
cout << "\nd2 is greater" ;
}
// B}
//C}
// Smaller
// A}
int d5 = d1 < d2; //d5 = d1.operator>(d2);
if( d5 == 1)
{
cout << "\nd1 is smaller" ;
}
else
{
cout << "\nd2 is smaller" ;
}
// B)
//C}
// Equal to Equal to
// A}
// B}
//C}
// Not Equal to
// A}
// B}
//C}