Hello jack,
Selecting the right function, and converting parameters to match the type where necessary, is extra work for the compiler. However, occasionally there are no easy alternatives, like getter and setter functions.
I'm keeping very quiet about operator overloading. I am still working on it to get the best performance for both high level and assembler level operations. A type can have its own set of operations, based on macros, so the overhead of calling operator functions is avoided.