C++ 函数名作为参数传递给另一个函数


将函数名作为参数传递给另外一个函数(其实函数名是一个函数指针)

例1:
int f1()
{
    return 1;
}
int f2()
{
    return 2;
}
void f(int f())
{
    printf("%d/n",f());
}
int main()
{
    f(f1);
    f(f2);
    return 0;
}

输出
1
2

例2:
void listArray(void handler(int &item))
{
    int ia[] = {1, 2, 3, 4, 5, 6};
    for(int i = 0; i < 6; ++i)
    {
        if(handler)
            handler(ia[i]);
        std::cout << i << ":" << ia[i] << " ";
    }
    std::cout << std::endl;
}

void doubleValueHandler(int &i)
{
    if(i % 2 == 0)
        i *= i;
    return ;
}

void testMethodHandler()
{
    listArray(NULL);
    listArray(doubleValueHandler);
}

输出:
0:1 1:2 2:3 3:4 4:5 5:6
0:1 1:4 2:3 3:16 4:5 5:36

相关内容