RE: What is the difference between function overloading and operator overloading?
Function overloading is the practice of declaring the same function with different signatures. The same function name will be used with different number of parameters and parameters of different type. But overloading of functions with different return types are not allowed.
On the other hand operator overloading is:
Operating overloading allows you to pass different variable types to the same function and produce different results. In this article Ben gives us the low-down on operator overloading in C++.Operator overloading is common-place among many efficient C++ programmers. It allows you to use the same function name but as different functions.
RE: What is the difference between function overloading and operator overloading?
The statement "But overloading of functions with different return types are not allowed." is incorrect. Function overloading only disallows overloading of functions with the same signatures but different return types. It is ok to return a different return type if you have a different signature.
One difference between function and operator overloading is that operator overloading is more restrictive. A restriction on operator overloading is that you cannot change the meaning of built-in operators. That means you cannot do this:
int& operator+(int& x int& y){...}
Also some operators such as the :: cannot be overloaded.