The problem is: if you could actually do that, and in the code you saw something like:
if ( a == b ) {
// more things...
}
Would you know if it is invoking the regular comparison or the, say, fuzzyCompare()
function? In order to distinguish between both, you would have to look up in the code what is the type of a and b... You wouldn't be able to read your own code without asking yourself a lot of questions, and probably cross-referencing a lot of variables with their types.
This is exactly the scenario in which operator overloading becomes a nightmare, and the reason its abuse led it to be dropped for languages such as Java.
Hope this helps.