Адреса перегруженных функций
При использовании имени функции без аргументов возвращается адрес этой функции. Например:
int Func( int i, int j );
int Func( long l );
...
int (*pFunc) ( int, int ) = Func;
В предыдущем примере выбирается первая версия функции Func и ее адрес копируется в переменную pFunc.
Для определения требуемой версии функции компилятор ищет функцию со списком аргументов, который точно соответствует указанным аргументам. Аргументы в объявлениях перегруженной функции сравниваются с одним из следующих объектов:
инициализируемый объект (как показано в предыдущем примере);
левая часть оператора присваивания;
формальный аргумент для функции;
формальный аргумент для определенного пользователем оператора;
тип возвращаемого функцией значения.
Если точное совпадение не найдено, выражение, получающее адрес функции, неоднозначно и создается ошибка.
Обратите внимание, что хотя в предыдущем примере использованная функция Func не является функцией-членом, при получении адреса перегруженной функции-члена применяются те же самые правила.