C++ Tutorial Home Page

C++ Operator Overloading

What is operator overloading
Rules for overloading Operators
Operator Overloading restrictions
List of operators that cannot be overloaded.
Overloading Unary operator
Overloading increment operator(++)
Overloading decrement operator(–)
Overloading unary operator(-)
Overloading increment operator(++) postfix
Overloading decrement operator(–) postfix
Overloading increment operator (++) with friend function
Overloading increment operator (–) with friend function
Increment the time using ++
Decrement the time using ++
Overloading Binary operator(+,-,*,/,%)
Add two object using “+” operator with friend function
Overloading “-” operator
Overloading “*” operator
Overloading “/” operator
Overloading “%” operator
overloading all (+,-,*,/,%)
Overloading “+” operator with friend function
class distance (feet,inches) with “+” operator
class distance (feet,inches) with “+” operator with friend function
class distance (km,m) with “+” operator
class distance (km,m) with “+” operator with friend function
class distance (m,cm) with “+” operator
class distance (m,cm) with “+” operator with friend function
class distance (km,m,cm) with “+” operator
class distance (km,m,cm) with “+” operator with friend function
class distance (km,m,cm,mm) with “+” operator
class distance (km,m,cm,mm) with “+” operator with friend function
class time(hh,mm,ss) with “+” operator
class time(hh,mm,ss) with “+” operator with friend function
class complex(real,ing) with “+” operator
class complex(real,ing) with “+” operator with friend function
class string(str) with “+” operator
class string(str) with “+” operator with friend function
overloading “+=” operator

C++:Overloading Unary operator (postfix form)

Example:5
Overloading decrement operator (- -) (Postfix form)

// to overload -- operator (as postfix)
//post increment
#include<iostream>
#include<conio.h>
using namespace std;
class sample
{
	int a;
public:
	sample();//defa
	sample(int n); //para
	void get();
	void disp();
	void operator--(int);
};
sample::sample()
{
	a=0;
}
sample::sample(int n)
{
	a=n;
}
void sample::get()
{
	cout<<"Enter the value of a ";
	cin>>a;
}
void sample::disp()
{
	cout<<"a= "<<a<<endl;
}
void sample::operator--(int)
{
	a=a-1;
}

int main()
{
  sample s1,s2;
  s1.get();s2.get();
  s1.disp();s2.disp();
  s1--;//s1.operator++();
  s1--;
  s2--;
  s1.disp();s2.disp();
  getch();
  return(0);
}


Output:

Enter the value of a 10
Enter the value of a 20
a= 10
a= 20
a= 8
a= 19

Example:6
Overloading increment operator (++) with friend function

// to overload ++ operator
//With friend function
#include<iostream>
#include<conio.h>
using namespace std;
class sample
{
	int a;
public:
	sample();//defa
	sample(int n); //para
	void get();
	void disp();
	friend sample operator++(sample t);
};
sample::sample()
{
	a=0;
}
sample::sample(int n)
{
	a=n;
}
void sample::get()
{
	cout<<"Enter the value of a ";
	cin>>a;
}
void sample::disp()
{
	cout<<"a= "<<a<<endl;
}
sample operator++(sample t)
{
	t.a=t.a+1;
	return(t);
}

int main()
{
  sample s1,s2;
  s1.get();
  s1.disp();
  s2=++s1;//s2=operator++(s1);
  s2.disp();
  getch();
  return(0);
}

Output:

Enter the value of a 10
a= 10
a= 11

Example:7
Overloading increment operator (- -) with friend function

// to overload -- operator ( with  friend function)
//With friend function
#include<iostream>
#include<conio.h>
using namespace std;
class sample
{
     int a;
public:
     sample();//defa
     sample(int n); //para
     void get();
     void disp();
     friend sample operator--(sample t);
};
sample::sample()
{
     a=0;
}
sample::sample(int n)
{
     a=n;
}
void sample::get()
{
     cout<<"Enter the value of a ";
     cin>>a;
}
void sample::disp()
{
     cout<<"a= "<<a<<endl;
}
sample operator--(sample t)
{
     t.a=t.a-1;
     return(t);
}

int main()
{
  sample s1,s2;
  s1.get();
  s1.disp();
  s2=--s1;//s2=operator--(s1);
  s2.disp();
  getch();
  return(0);
}

Output: