Examples of Operator Overloading in C++

  • October 30, 2022
  • C++
Accessing Elements

Let’s see examples of operator overloading in C++ for various types of operators.

Examples:
1) Add given timestamps by overloading + operator
#include <iostream>
using namespace std;

class Time {
private:
	int HR, MIN, SEC;

	// Defining functions
public:
	// Functions to set the time
	// in the Time class template
	void setTime(int x, int y, int z)
	{
		HR = x;
		MIN = y;
		SEC = z;
	}

	// Function to print the time
	// in HH:MM:SS format
	void showTime()
	{
		cout << endl
			<< HR << ":" << MIN << ":" << SEC;
	}

	// Function to normalize the resultant
	// time in standard form
	void normalize()
	{
		MIN = MIN + SEC / 60;
		SEC = SEC % 60;
		HR = HR + MIN / 60;
		MIN = MIN % 60;
	}

	// + Operator overloading
	// to add the time t1 and t2
	Time operator+(Time t)
	{
		Time temp;
		temp.SEC = SEC + t.SEC;
		temp.MIN = MIN + t.MIN;
		temp.HR = HR + t.HR;
		temp.normalize();
		return (temp);
	}
};

// Driver code
int main()
{
	Time t1, t2, t3;
	t1.setTime(3, 49, 30);
	t2.setTime(7, 10, 34);

	// Operator overloading
	t3 = t1 + t2;

	// Printing results
	t1.showTime();
	t2.showTime();
	t3.showTime();

	return 0;
}

setTime() function is used to set HR, MIN and SEC values.

showTime() function displays the time in a specific format (HH:MM:SS).

We add the seconds, minutes, and hours separately to get the new time value.

Output:
3:49:30
7:10:34
11:0:4
2) Overloading Relational Operator :
#include <iostream>
using namespace std;

class Student{
    int feet = 0; //can be b/w 0 & infinity
    int inches = 0; // can be b/w 0 & 12
    
    public:
    void getHeight(int f, int i){
        feet = f;
        inches = i;
    }

    // const and & added check explanation above(Before code) why
    bool operator > (const Student& s2)
    {
        if(feet > s2.feet)
            return true;
        
        else if(feet == s2.feet && inches > s2.inches)
            return true;
         
        return false;
    }
};

int main()
{
    Student s1,s2;
    
    s1.getHeight(5,10);
    s2.getHeight(6,1);
    
    if(s1 > s2)
        cout << "Student 1 is taller" << endl; else if(s2 > s1)
        cout << "Student 2 is taller" << endl;
    else
        cout << "Both have equal height" << endl;
    

    return 0;
}

Here we are Overloading > i.e. greater than operator.

Output:
Student 2 is taller
3)  Overloading << Operator
#include <iostream>

class Point
{
private:
    double m_x{};
    double m_y{};
    double m_z{};

public:
    Point(double x=0.0, double y=0.0, double z=0.0)
      : m_x{x}, m_y{y}, m_z{z}
    {
    }

    friend std::ostream& operator<< (std::ostream& out, const Point& point);
};

std::ostream& operator<< (std::ostream& out, const Point& point)
{
   
    out << "Point(" << point.m_x << ", " << point.m_y << ", " << point.m_z << ')'; // actual output done here

    return out; // return std::ostream so we can chain calls to operator<<
}

int main()
{
    const Point point1{2.0, 3.0, 4.0};

    std::cout << point1 << '\n';

    return 0;
}

Since operator<< is a friend of the Point class, we can access Point’s members directly.

Output:
Point(2, 3, 4)
4) Copy Constructor & Assignment Operator:

Copy constructor and Assignment operator are similar, as they are both used to initialize one object using another. However, there are some fundamental differences between them:

  • The assignment operator is used to copy values from one object to another that already exists.
  • In contrast, the Copy constructor is a particular constructor that creates a new object from an existing one.
#include <iostream>
#include <stdio.h>
using namespace std;

class Test {
public:
	Test() {}
	Test(const Test& t)
	{
		cout << "Copy constructor called " << endl;
	}

	Test& operator=(const Test& t)
	{
		cout << "Assignment operator called " << endl;
		return *this;
	}
};

// Driver code
int main()
{
	Test t1, t2;
	t2 = t1;
	Test t3 = t1;
	getchar();
	return 0;
}
Output:
Assignment operator called 
Copy constructor called 

Note: also read about Operator Overloading in C++

Follow Me

Please follow me to read my latest post on programming and technology if you like my post.

https://www.instagram.com/coderz.py/

https://www.facebook.com/coderz.py

Leave a Reply

Your email address will not be published. Required fields are marked *