Operator overloading | SoloLearn: Learn to code for FREE!


Operator overloading

Can anyone clearly explains operator overloading with an example?

1/31/2017 12:52:34 PM


9 Answers

New Answer


@Mario, To add the age of two persons we can simply use '+'? then why we should operator overload??. My question may be stupid but still I wanna know.


#Daohacker , Give one.


@Mario Laurisch making the sum of 2 people be the sum of their ages seems a bad example though. I guess I will provide an example after all...


Ok, C++ isn't a language I know yet, so it took me some time, but here it is: #include <iostream> using namespace std; class Square { private: int side; public: void SetSide(int s) { this->side = s; } int Perimeter() { return side * 4; } Square operator+(const Square& b) { Square c; c.SetSide(this->side + b.side); return c; } }; int main() { Square sq1, sq2; sq1.SetSide(3); sq2.SetSide(5); Square sq3 = sq1 + sq2; cout << sq3.Perimeter() << endl; return 0; } With this example, you can easily create a new square which has perimeter equal to the sum of 2 other squares' perimeter.


Operator Overloading is used to redefine the meaning of operators when used on specific data types. I could make an example, but i'm lazy... I'm just replying because nobody did yet, I'm sure some kind soul will provide you one.


you use it to define how your self created objects behave when used with operators. let's say you have a class defining a person. a person has an age. now you have two objects of type person and want to get the sum of their ages. that's where you'd overload the + operator. an example is within the course. you could also define that the + operator returns the product of two objects.


well, now I'm interested too. the way I explained it is the way I understood the example in the course. so there's more to it than just defining operations on object's attributes?


Operator overloading is very similar to function overloading. Operator overloading is where you redefine an operator so it behaves in a certain way for a user defined type like a class. a quick example in c++: class Point { public: float x; float y; Point operator+(const Point& secondPoint); }; Point Point::operator+(const Point& secondPoint) { Point newPoint; newPoint.x = x + secondPoint.x; newPoint.y = y + secondPoint.y; return newPoint; // return the new point. } then later you could declare 2 point objects, assign them values and add them together with the + operator Point point1; point1.x = 1.0f; point1.y = 2.0f; Point point2; point2.x = 5.0f; point2.y = 6.0f; Point point3; point3 = point1 + point2;


Another example: https://www.tutorialspoint.com/cplusplus/cpp_overloading.htm I hope it's helpful.