Имя функции является указателем на функцию...
Но в случае перегрузки функций имена двух функций одинаковы...
Итак, какая функция указывает на это имя?
Перегрузка функций и указатели функций
Ответ 1
Это зависит от контекста; в противном случае это двусмысленно. См. этот пример (изменен за исключением ниже):
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)
}
Вы можете сделать это разными способами, но правило №1?
Избегайте приведения!
В противном случае вы сломаете безопасность типа и, вероятно, застрелите себя в ноге либо тогда, либо позже.
(Проблемы могут возникать при вызовах, случайных изменениях, которые вы не замечаете и т.д.)