Function overloading can be accomplished by name mangling at compile time.
PROGRAMMER SEES INTERNAL REPRESENTATION
foo(int a, char b) foo_int_char
foo(int x) foo_int