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