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?
C has no default parameters.
The default parameter is a way to set default values for function parameters a value is no passed in (ie. it is undefined ). In a function, Ii a parameter is not provided, then its value becomes undefined . In this case, the default value that we specify is applied by the compiler.
Default values indicate that the function argument will take that value if no argument value is passed during function call. The default value is assigned by using assignment (=) operator. Below is a typical syntax for default argument. Here, foo parameter has a default value Hi! def defaultArg(name, foo='Come here!'
Rule 1: creating functions. When programmers give a parameter a default value, they must give default values to all the parameters to right of it in the parameter list.
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]
Default argument cannot be provided for pointers to functions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With