35

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

对于哪个函数,我可以使用哪些函数指针?

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 回答