在C ++中使用默认参数的函数指针

时间:2010-04-05 00:23:42

标签: c++ function-pointers default-parameters function-signature

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 个答案:

答案 0 :(得分:31)

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
  

- 结束示例]

答案 1 :(得分:0)

无法为指向函数的指针提供默认参数。