Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

Address of Overloaded Functions

Use of a function name without arguments returns the address of that function. For example:

int Func( int i, int j );
int Func( long l );


int (*pFunc) ( int, int ) = Func;

In the preceding example, the first version of Func is selected, and its address is copied into pFunc.

The compiler determines which version of the function to select by finding a function with an argument list that exactly matches that of the target. The arguments in the overloaded function declarations are matched against one of the following:

  • An object being initialized (as shown in the preceding example)

  • The left side of an assignment statement

  • A formal argument to a function

  • A formal argument to a user-defined operator

  • A function return type

If no exact match is found, the expression that takes the address of the function is ambiguous and an error is generated.

Note that although a nonmember function, Func, was used in the preceding example, the same rules are applied when taking the address of overloaded member functions.

Community Additions

© 2015 Microsoft