Binary Operator Overloading in C++ (With Example Programs)
Binary operator overloading
Operator overloading is a compile polymorphic technique where a single operator can perform multiple functionalities. As a result, the operator that is overloaded is capable to provide special meaning to the user-defined data types as well. We can overload binary operators like +,*/, – etc to directly manipulate the object of a class.
Example 1
Objective: C++ Program to Add and subtract two complex numbers using Binary Operator Overloading
Here we will try to write a program and demonstrate how Binary Operator Overloading works –
In the below program we add/subtract two complex numbers
- Complex Number 1(obj1): 7 + 5i
- Complex Number 2(obj2): 3 + 4i
Operations done –
- Operation 1: Obj1 + Obj2
- Operation 1: Obj1 – Obj2
// Write a program to demonstrate binary operator overloading
#include <iostream>
using namespace std;
class complex
{
int a, b;
public:
void get_data(){
cout << "Enter the value of Complex Numbers a, b: "; cin >> a >> b;
}
complex operator+(complex ob)// overaloded operator function +
{
complex t;
t.a = a + ob.a;
t.b = b + ob.b;
return (t);
}
complex operator-(complex ob)// overaloded operator function -
{
complex t;
t.a = a - ob.a;
t.b = b - ob.b;
return (t);
}
void display(){
cout << a << "+" << b << "i" << "\n";
}
};
int main()
{
complex obj1, obj2, result, result1;
obj1.get_data();
obj2.get_data();
result = obj1 + obj2;
result1 = obj1 - obj2;
cout << "\n\nInput Values:\n";
obj1.display();
obj2.display();
cout << "\nResult:";
result.display();
result1.display();
return 0;
}
Output
Enter the value of Complex Numbers a, b: 7 5 Enter the value of Complex Numbers a, b: 3 4 Input Values: 7+5i 3+4i Result:10+9i 4+1i
Example 2
We will perform all mathematical operations on two objects obj1 and obj2
- Addition
- Subtraction
- Multiplication
- Division
// C++ Program to perform mathemtical operations on two objects
// using Binary Operator Overloading
#include <iostream>
using namespace std;
class Math
{
int num;
public:
// setter to set value
void setValue(int val){
num = val;
}
// overloading + operator to add values in two objects
Math operator + (Math &obj){
Math temp;
temp.num = num + obj.num;
return (temp);
}
// overloading - operator to subtract values in two objects
Math operator - (Math &obj){
Math temp;
temp.num = num - obj.num;
return (temp);
}
// overloading * operator to multiply values in two objects
Math operator * (Math &obj){
Math temp;
temp.num = num * obj.num;
return (temp);
}
// overloading / operator to divide values in two objects
Math operator / (Math &obj){
Math temp;
temp.num = num / obj.num;
return (temp);
}
// display result value getter
void getValue(){
cout << num;
}
};
int main ()
{
// created objects obj1 and obj2 to perform mathematical operations on
// created resObj to store results
Math obj1, obj2, resObj;
// accepting the values
obj1.setValue(20);
obj2.setValue(10);
cout << "Obj 1: ";
obj1.getValue();
cout << "\nObj 2: ";
obj2.getValue();
// assign result of obj1 and obj2 to resObj
// addition
resObj = obj1 + obj2;
cout << "\n\nObj1 + Obj2 : " ;
resObj.getValue();
// subtraction
resObj = obj1 - obj2;
cout << "\nObj1 - Obj2 : " ;
resObj.getValue();
// multiplication
resObj = obj1 * obj2;
cout << "\nObj1 * Obj2 : " ;
resObj.getValue();
// division
resObj = obj1 / obj2;
cout << "\nObj1 / Obj2 : " ;
resObj.getValue();
return 0;
}
Output
Obj 1: 20 Obj 2: 10 Obj1 + Obj2 : 30 Obj1 - Obj2 : 10 Obj1 * Obj2 : 200 Obj1 / Obj2 : 2
Example 3
Adding the dimension of two Cube objects and printing the results for volume for the resultant cube
Cube 3 = Cube1 + Cube2
#include <iostream>
using namespace std;
class Cube {
double length; // Length of a Cube
double breadth; // Breadth of a Cube
double height; // Height of a Cube
public:
double getVolume(void) {
return length * breadth * height;
}
void setDimensions(double len, double h, double b) {
length = len;
breadth = b;
height = h;
}
// Overload + operator to add two Cube objects
Cube operator+(const Cube& c) {
Cube temp;
temp.length = this->length + c.length;
temp.breadth = this->breadth + c.breadth;
temp.height = this->height + c.height;
return temp;
}
};
// Main function for the program
int main() {
Cube cube1, cube2, cube3; // Declare 3 cube objects
// setters for cube
cube1.setDimensions(3.0, 3.0, 3.0);
cube2.setDimensions(5.0, 5.0, 5.0);
// print values of cube1 and cube2
cout << "Volume of cube1 : " << cube1.getVolume() << endl;
cout << "Volume of cube2 : " << cube2.getVolume() << endl;
// Lets add two objects using binary overloading + operator
cube3 = cube1 + cube2;
// result
cout << "Volume of cube3 : " << cube3.getVolume() << endl;
return 0;
}
Output
Volume of cube1 : 27 Volume of cube2 : 125 Volume of cube3 : 512
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Get over 200+ course One Subscription
Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others
OOPs Advanced - 1
- Inheritance
- Types of Inheritance in c++
- Polymorphism
- Upcasting and Downcasting in C++
- Operator Overloading (detailed)
- Input/Output Operators Overloading in C++
- Assignment Operators Overloading in C++
- Function Call Operator () Overloading in C++
- Class Member Access Operator (->) Overloading in C++
- Unary Operator Overloading in C++
- Binary Operator Overloading in C++
- Relational operator overloading in C++
- Overloading ++ and — increment and Decrement Operators in C++
- Constructor Overloading in C++

Login/Signup to comment