Подтвердить что ты не робот

Перегрузка функций и указатели функций

Имя функции является указателем на функцию...
Но в случае перегрузки функций имена двух функций одинаковы...
Итак, какая функция указывает на это имя?

4b9b3361

Ответ 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?

Избегайте приведения!

В противном случае вы сломаете безопасность типа и, вероятно, застрелите себя в ноге либо тогда, либо позже.
(Проблемы могут возникать при вызовах, случайных изменениях, которые вы не замечаете и т.д.)