函数指针在c++中具有默认参数

时间:2021-03-20 11:11:22

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.

不能为指向函数的指针提供默认参数。