AvinashK
AvinashK

Reputation: 3423

Function overloading and function pointers

The name of a function is a pointer to the function...
But in case of function overloading the names of two functions are the same...
So which function does the name point to?

Upvotes: 17

Views: 5406

Answers (1)

user541686
user541686

Reputation: 210755

It depends on the context; otherwise it's ambiguous. See this example (modified except below):

void foo(int a) { }
void foo(int a, char b) { }

int main()
{
    void (*functionPointer1)(int);
    void (*functionPointer2)(int, char);
    functionPointer1 = foo; // gets address of foo(int)
    functionPointer2 = foo; // gets address of foo(int, char)
}

You can do this in many ways, but the #1 rule?

Avoid casts!

Otherwise you'll break type safety and probably shoot yourself in the foot either then or later.
(Issues can come up with calling conventions, random changes you don't notice, etc.)

Upvotes: 21

Related Questions