Function pointers with default parameters in C++

纵饮孤独 提交于 2019-12-18 18:37:15

问题


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?


回答1:


Both foo() and bar() can only be assigned to func_ptr2.

§8.3.6/2:

A default argument is not part of the type of a function. [Example:

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

--end example]




回答2:


Default argument cannot be provided for pointers to functions.



来源:https://stackoverflow.com/questions/2576411/function-pointers-with-default-parameters-in-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!