"Why do you want to know" is not a difficult question to understand. But I can't answer your original question until I know, er, why you want to know.

Your original question has nothing to do with overloaded functions because abc() and xyz() differ in name. But with overloaded functions they differ in parameters so the compiler can tell which function to call by looking at the parameters. So if you have abc() and abc(int), then the compiler can determine which to call by whether or not you pass an int, and if you try to default the int param (e.g. void abc(int x=0)) then the compiler will throw an error because it won't be able to determine if a call like abc(); means call abc() or abc(0).

By the way, the term "run time" has nothing to do with the compiler. The compiler compiles the code to object code. The linker links the object code with the relevant libraries to make executable. When you run the program, that is "run-time" and the compiler is not involved.
shabbir like this