Operators in C++ are things such as
+,
-,
*,
=. Now, if one has two variables of type
int (which means they both represent integers), it's pretty clear how the "+" operator should work on them. It should add them, and return the result. Thus, the code fragment
int foo, bar, baz; //Declare integer variables "foo", "bar", and "baz"
foo = 5; //Set foo to 5
bar =6; //Set bar to 6
baz = foo + bar;
results in the variable
baz having a value of 5+6, or 11.
But what if you want to add something other than one of the fundamental types. What if you have two objects of class Box? How do you add two boxes? It depends on the specific requirements of your program.
And, without operator overloading, one would have to declare, within the Box class a function such as this:
Box Add(Box otherbox);
and use it like so
box3 = box2.Add(box1);
Now, with operator overloading, we can merely declare a function called operator+ to overload the "+" operator. The declaration looks similar to the one above(and the code within the function would be identical):
Box operator+(Box otherbox);
but now this is a valid statement
box3 = box2 + box1;
The advantage to operator overloading is that it makes code much more readable. However, people who dislike it claim that it tends to make code more cryptic.