Hi,
Overloading and overriding are two ways of implementing one of the basic concept of OOPS principles namely,
polymorphism. I remember studying way back that the idea behind polymorphism was the same form for different uses. The main advantage of overloading can be qualified as improving the readability. Just consider a scenario where you are coding a calculator application where you have to perform various mathematical operations on different kinds of arguments. Would it not be better to have a single add()/subtract().... that takes advantage of overloading to perform the same operation for different arguments than having multiple addInteger()/addFloat().... etc? That said I do agree it improves the readability and also feel makes the code more elegant and maintainable. I am of the opinion that given a particular requirement anyone can write the code and get it to work but the real challenge is in writing code that is readable, easy to understand and to maintain (Keep in mind that more often than not the code one writes may have to be maintained by somebody else). As you mentioned the overhead on the compiler caused by overloading, I am of the view that would be minuscule as opposed to the neatness and structure it provides.
Cheers,
Raj.
[ August 12, 2008: Message edited by: Raj Kamal ]