C++ c++;void函数作为其他函数的参数

C++ c++;void函数作为其他函数的参数,c++,function,arguments,void,C++,Function,Arguments,Void,我不明白为什么这段使用int函数和参数的代码能够正确工作,但是这段带有void函数和不带参数的代码不能: 第一: #include <iostream> int Add(int x, int y) { return x+y; } int operation(int x, int y, int (*function)(int, int)) { return function(x, y); } int main() { std::cout << ope

我不明白为什么这段使用int函数和参数的代码能够正确工作,但是这段带有void函数和不带参数的代码不能:

第一:

#include <iostream>
int Add(int x, int y)
{
    return x+y;
}
int operation(int x, int y, int (*function)(int, int))
{
    return function(x, y);
}
int main()
{
    std::cout << operation(1, 4, &Add) << std::endl;
    return 0;
}
#包括
整数相加(整数x,整数y)
{
返回x+y;
}
整数运算(整数x,整数y,整数(*函数)(整数,整数))
{
返回函数(x,y);
}
int main()
{

std::cout在第一个示例中,不需要获取Add()的地址。按名称传递函数(不带参数)将自动获取地址

std::cout << operation(1, 4, Add) << std::endl;
当传递给b时,您也不需要获取a的地址,因为引用不带参数的函数时,将获取其地址:

int main()
{
    b(a);
    return 0;
}
void b(void (*function)(/* these brackets were missing */))
{
int main()
{
    b(a);
    return 0;
}