Указатели на функции с параметрами по умолчанию в C ++ - PullRequest
33 голосов
/ 05 апреля 2010

Как C ++ обрабатывает указатели на функции с параметрами по умолчанию?

Если у меня есть:

void foo(int i, float f = 0.0f);
void bar(int i, float f);


void (*func_ptr1)(int);
void (*func_ptr2)(int, float);
void (*func_ptr3)(int, float = 10.0f);

Какие указатели функций можно использовать по отношению к какой функции?

Ответы [ 2 ]

31 голосов
/ 05 апреля 2010

Обе foo() и bar() могут быть назначены только на func_ptr2.

* ** 1005 1006 * §8.3.6 / 2

Аргумент по умолчанию не является частью типа функции. [Пример:

int f(int = 0);

void h() {
    int j = f(1);
    int k = f(); // OK, means f(0)
}

int (*p1)(int) = &f; 
int (*p2)() = &f; // error: type mismatch

- последний пример]

0 голосов
/ 02 августа 2013

Аргумент по умолчанию не может быть предоставлен для указателей на функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...