How does C++ handle function pointers in relation to functions with defaulted parameters?
c++如何处理与具有默认参数的函数相关的函数指针?
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?
我可以用哪个函数指针来表示哪个函数?
2 个解决方案
#1
30
Both foo()
and bar()
can only be assigned to func_ptr2
.
foo()和bar()只能分配给func_ptr2。
§8.3.6/2:
§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
0
Default argument cannot be provided for pointers to functions.
不能为指向函数的指针提供默认参数。
#1
30
Both foo()
and bar()
can only be assigned to func_ptr2
.
foo()和bar()只能分配给func_ptr2。
§8.3.6/2:
§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
0
Default argument cannot be provided for pointers to functions.
不能为指向函数的指针提供默认参数。