• C++ 将函数作为形参


    今天偶然看到一段代码,其中将函数作为形参进行设计,一开始不理解,自己试了一下,发现果然可行

    #include <iostream>
    using namespace std;
    
    void visit(int *p)
    {
        cout << *p << "  ";
    }
    
    void seeAll(int *array, void(* formalParameterFunc)(int *p), int length)
    {
        for (int *p = array; p < array + length; p++)
        {
            formalParameterFunc(p);
        }
        cout << endl;
    }
    
    int main()
    {
        int a[11] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 11};
        seeAll(a, visit, sizeof(a)/sizeof(a[0]));
        return 0; 
    }
    //最后输出为 1  2  3  4  5  6  7  8  9  0  11

    seeAll函数设计了三个形参, 其中 void (* formalParameterFunc) (int *p)解释如下:

    1. formalPatameterFunc先与*结合,说明它是个指针
    2. 然后(* formalParameterFunc)与后面的(int *p)结合,说明(* formalParameterFunc)是一个函数,其返回值是void类型

    所以,formalParameterFunc是个指向函数的指针,该被指向的函数的返回值是void,该被指向的函数的形参是int* 类型的变量;在seeAll执行的过程中,需在该位置传入一个满足该要求的函数型实参(本例为visit函数)

    注:seeAll函数中可以设计为不用传入函数实参,使用时直接调用visit即可,本例只是示范“将函数作为形参”这一用法而已,即可将上述的seeAll函数修改如下,可达到一样的效果

    void seeAll(int *array, int length)
    {
        for (int *p = array; p < array + length; p++)
        {
            visit(p);
        }
        cout << endl;
    }
    

     

  • 相关阅读:
    1.28
    1.27
    1.26
    如果给你以下功能怎么测试
    测试面试题
    对h5页面的测试方式
    完美解决linux下Django报错Error: That port is already in use.
    KeyError:使用Python的Appium中的“ touchAction” 错误码
    Appium自动化测试
    selenium IDE使用
  • 原文地址:https://www.cnblogs.com/wqpkita/p/7510852.html
Copyright © 2020-2023  润新知