35

How does C++ handle function pointers in relation to functions with defaulted parameters?

If I have:

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);

Which function pointers can I use in relation to which function?

4

2 に答える 2

33

との両方foo()を にbar()のみ割り当てることができますfunc_ptr2

§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

--終わりの例]

于 2010-04-05T00:30:52.760 に答える
1

関数へのポインターにデフォルトの引数を指定することはできません。

于 2013-08-02T16:55:11.350 に答える