程序:
#include <iostream>
void foo(void (*bar)()){ bar(); };
void foo(int a = 5)
{
std::cout << a << std::endl;
}
int main()
{
foo(foo); //Error
}
我预计 foo(5)
最终会被调用。相反,以下程序运行良好:
#include <iostream>
void foo(void (*bar)()){ bar(); };
void foo()
{
std::cout << 5 << std::endl;
}
int main()
{
foo(foo); //OK
}
你能解释一下这个区别吗?
最佳答案
在第一个例子中,虽然 foo 有默认参数,但它的类型是 void (bar*)(int)。拥有默认参数可以在不显式指定参数值的情况下调用 foo ,但仍然有一个 int 参数。只是它的值会自动填充(在编译期间)。
关于c++ - 为什么我们不能从具有默认参数的函数中调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27996897/