Export (0) Print
Expand All
2 out of 5 rated this helpful - Rate this topic

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.

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

© 2014 Microsoft. All rights reserved.