当前位置: 首页 > news >正文

C++11function包装器的使用

类模板std::function是一种通用、多态的函数包装。std::function的实例可以对任何可以调用的目标实体进行存储、
复制和调用操作。这些目标实体包括普通函数、Lambda表达式、函数指针、以及其他函数对象等。std::function对象是对
C++中现有的可调用实体的一种类型安全的包裹(像函数指针这类可调用实体,是类型不安全的)
    通常std::function是一个函数对象类,它包装其它任意的函数对象,被包装的函数对象具有类型为T1,...Tn的n个参数
并且可返回一个可转换到R类型的值。std::function使用模板转换构造函数接收被包装的函数对象。
    准确来说,可调用对象有如下几种定义:
    (1)是一个函数指针;
    (2)是一个具有operator()成员函数的类对象
    (3)是一个可以被转换为函数指针的类对象
    (4)是一个类成员函数指针

#include<iostream>
#include<functional>
using namespace std;void func(int x)
{cout << "func name:" << __FUNCTION__ << endl;cout << "x=" << x << endl;
}
class Foo
{
public:static int foo_func(int x){cout << "func name:" << __FUNCTION__ << endl;cout << "x=" << x << endl;return x;}
};
class Bar
{
public:int operator()(int x){cout << "func name:" << __FUNCTION__ << endl;cout << "x=" << x << endl;return x;}
};
int main()
{int x = 10;//绑定一个普通函数std::function<void(int)> fr1 = func;fr1(x);//绑定一个类的静态成员函数std::function<int(int)> fr2 = Foo::foo_func;cout << fr2(x) << endl;Bar bar;fr2 = bar;std::cout << fr2(x) << endl;return 0;
}

http://www.lryc.cn/news/352044.html

相关文章:

  • Vue3判断变量和对象不为null和undefined
  • C++进阶:C++11(列表初始化、右值引用与移动构造移动赋值、可变参数模版...Args、lambda表达式、function包装器)
  • Vue.js Promise 与 async/await 的比较
  • Qt 报错总结 No suitable kits found
  • ThingsBoard如何拆分前后端分离启动
  • 加载页面 跳转 新页面 vue
  • 中国主要城市房价指数数据集(2011-2024)
  • Creating Server TCP listening socket *:6379: listen: Unknown error
  • JUnit5标记测试用例
  • 在Windows10中重命名文件和文件夹的6种方法,有你熟悉和不熟悉的
  • Go源码--sync库(1)sync.Once和
  • 头歌OpenGauss数据库-I.复杂查询第3关:统计总成绩
  • LeetCode hot100-47-N
  • 中北大学软件学院计算机网络实验一
  • 扩散模型学习1
  • 【HTML】制作一个跟随鼠标的流畅线条引导页界面(可直接复制源码)
  • vue3父子组件、跨级组件之间的通信之provide, inject -- 通俗易懂
  • input输入多行文本,保存为.dot文件和对应的.txt文件
  • 如何让社区版IDEA变得好用
  • Hsql每日一题 | day02
  • RepOptimizer原理与代码解析(ICLR 2023)
  • 持续总结中!2024年面试必问 20 道 Redis面试题(六)
  • 【通义千问—Qwen-Agent系列2】案例分析(图像理解图文生成Agent||多模态助手|| 基于ReAct范式的数据分析Agent)
  • 10G SFP双口万兆以太网控制器,高速光口网络接口卡
  • [前端|vue] 验证器validator使用笔记 (笔记)
  • 欢乐钓鱼大师攻略大全,游戏自动辅助,钓鱼大全!
  • Prompt - 流行的10个框架
  • PYQT5点击Button执行多次问题解决方案(亲测)
  • 华为编程题目(实时更新)
  • AI巨头争相与Reddit合作:为何一个古老的论坛成为AI训练的“宝藏”?