C++零基础教程之std:function函数包装器
小职 2021-08-02 来源 :C语言基础 阅读 621 评论 0

摘要:本文主要介绍了C++零基础教程之std:function函数包装器,通过具体的内容向大家展现,希望对大家C++开发的学习有所帮助。

本文主要介绍了C++零基础教程之std:function函数包装器,通过具体的内容向大家展现,希望对大家C++开发的学习有所帮助。

C++零基础教程之std:function函数包装器

前言

C++中可调用对象的虽然都有一个比较统一的操作形式,但是定义方法五花八门,这样就导致使用统一的方式保存可调用对象或者传递可调用对象时,会十分繁琐。C++提供了std::function和std::bind统一了可调用对象的各种操作。不同类型可能具有相同的调用形式。使用前记得加上functional头文件。

 

包装普通函数

#include <iostream>

#include <string>

#include <functional>

using namespace std;

int Max(int a, int b)  

{

    return a > b ? a : b;

}

void print()  

{

    cout << "无参无返回值" << endl;

}

int main()

{

  function<int(int, int)> funMax(Max);

    cout << funMax(1, 2) << endl;

    function<void()> funPrint(print);

    print();

    printData(funMax, 1, 2);

  return 0;

}

包装类的静态方法

#include <iostream>

#include <string>

#include <functional>

using namespace std;

class Test  

{

public:

    static void  print(int a, int b)  

    {

        cout << a + b << endl;

    }

    void operator()(string str)  

    {

        cout << str << endl;

    }

    operator FuncPTR()  

    {

        return print;

    }

};

int main()  

{

    //包装类的静态方法

    function<void(int, int)> sFunc = Test::print;

    sFunc(1, 2);

    return 0;

}

包装仿函数

#include <iostream>

#include <string>

#include <functional>

using namespace std;

class Test  

{

public:

    void operator()(string str)  

    {

        cout << str << endl;

    }

};

int main()  

{

    //包装仿函数

    Test test;

    function<void(string)> funTest = test;

    test("仿函数");

    return 0;

}

包装转换成函数指针的对象 (operator的隐式转换)

#include <iostream>

#include <string>

#include <functional>

using namespace std;

using FuncPTR = void(*)(int, int);

class Test  

{

public:

  static void  print(int a, int b)  

    {

        cout << a + b << endl;

    }

    operator FuncPTR()  

    {

        return print;

    }

};

int main()  

{

    //包装转换成函数指针的对象  (operator的隐式转换)

    Test object;

    function<void(int,int)> funOPE = object;

    funOPE(2, 3);

    return 0;

}

 

我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

C++零基础教程之std:function函数包装器

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程