• C++ pass function and arguments as parameter via function address * symbol


    #include <iostream>
    #include <functional>
    
    using namespace std;
    
    int sum41(int x,int y);
    int multiply42(int x,int y);
    int passFuncAddress43(int x,int y,int(*func)(int ,int));
    void callFuncAddress44(int x,int y);
    
    int main(int args, char **argv)
    {
        callFuncAddress44(atoi(argv[1]), atoi(argv[2]));
    }
    
    void callFuncAddress44(int x,int y)
    {
        cout<<"Sum of x and y is "<<passFuncAddress43(x,y,&sum41)<<endl;
        cout<<"Prod of x and y is "<<passFuncAddress43(x,y,&multiply42)<<endl;
    }
    
    int passFuncAddress43(int x,int y,int(*func)(int ,int))
    {
        return func(x,y);
    }
    
    int multiply42(int x,int y)
    {
        cout<<"In int multiply42(int x,int y)"<<endl;
        return x*y;
    }
    
    int sum41(int x,int y)
    {
        cout<<"In int sum41(int x,int y)"<<endl;
        return x+y;
    }

    Compile the above code via g++,and run as below

    ./h1 10000 10000

    Please pay more attention to below function declaration and definition via passing function address.

    //Pass function via address *, include return type,function address and parameter types
    
    int passFuncAddress43(int x,int y,int(*func)(int ,int))
    {
        return func(x,y);
    }

    When we invoke above function which we will pass arguments at first orderly and at last pass function address via & symbol

    void callFuncAddress44(int x,int y)
    {
        cout<<"Sum of x and y is "<<passFuncAddress43(x,y,&sum41)<<endl;
        cout<<"Prod of x and y is "<<passFuncAddress43(x,y,&multiply42)<<endl;
    }
  • 相关阅读:
    识人高招:六招看清一个人
    让工作变简单的10种技巧
    推销中的五大提问技巧
    给初次签约大学生的忠告
    只要有钱50岁男人也嫁
    我老公一个月赚15000,但是幸福在哪呢?(转载)
    想法简单,生命更宽!
    中国经典到吐血的谎话
    你的思想是你最大的敌人
    完美人生从哪里起步
  • 原文地址:https://www.cnblogs.com/Fred1987/p/16267922.html
Copyright © 2020-2023  润新知