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

c++bind绑定器--通俗易懂

bind是什么

bind是一个函数模板,它就像一个函数包装器 ( 适配器 ) 接受一个可 调用对象 ,生成一个新的可调用对象来 适应 原对象的参数列表

bind怎么使用

int Add(int a, int b, int c)
{
	return a + b + c;
}

class Sub
{
public:
	int sub(int a, int b)
	{
		return a - b;
	}
};
int main()
{
	//表示绑定函数plus 参数分别由调用 Add 的第一,二,三个参数指定
	function<int(int, int, int)> func1 = bind(Add, placeholders::_1, placeholders::_2, placeholders::_3);
	cout << func1(33, 22, 11) << endl;
	//表示绑定函数 plus 的第一,二,三的参数的值分别为: 1, 2 , 3
	function<int(int, int, int)> func2 = bind(Add, 1, 2, 3);
	cout << func2(33, 22, 11) << endl;

	Sub s;
	// 绑定成员函数
	function<int(Sub *,int, int)> func3 = bind(&Sub::sub, placeholders::_1,placeholders::_2,placeholders::_3);
	cout << func3(&s,2, 1) << endl;
	return 0;
}

bind的使用场景

bind可以改变传入参数的个数!!!

我们想在一个类外使用这个类的非静态成员函数时,我们可以使用bind绑定这个函数,让我们不必传入this指针

	// 绑定成员函数
	function<int(Sub *,int, int)> func3 = bind(&Sub::sub, placeholders::_1,placeholders::_2,placeholders::_3);
	cout << func3(&s,2, 1) << endl;

	// 绑定成员函数 优化
	function<int(int, int)> func4 = bind(&Sub::sub,&s,placeholders::_1, placeholders::_2);
	cout << func4( 2, 1) << endl;


http://www.kler.cn/a/384013.html

相关文章:

  • 【测试语言篇四】Python进阶篇之json模块
  • mysql5安装
  • 使用Python创建自助抢单插件的完整指南
  • 【前端知识】es6基础语法介绍
  • 深入浅出:解读注意力机制,让神经网络更“聪明”
  • unity实习生面试
  • 【大模型系列】Grounded-VideoLLM(2024.10)
  • 《深入理解拷贝构造函数:对象复制的核心机制》
  • Java ssm 基于微信小程序的民宿预订管理系统
  • VBA10-处理Excel的动态数据区域
  • 241107-离线环境下RHEL通过Python配置BerkeleyDB数据库
  • 一七六、CSS 介绍及示例
  • Flutter PC端UI组件库
  • 以太网交换安全:MAC地址漂移
  • C++——完美转发(引用折叠+forward)
  • wflow-web:开源啦 ,高仿钉钉、飞书、企业微信的审批流程设计器,轻松打造属于你的工作流设计器
  • 音频3A一——webrtc源码3A的启用方法和具体流程
  • runnable和callable区别和底层原理
  • Open API生成前端接口
  • 力扣——单值二叉树(C语言)
  • 蓝桥杯 区间移位--二分、枚举
  • CSS定位装饰
  • ASPICE框架下的高效汽车软件开发实践与优化策略
  • 实战技巧:深入Air780E的WebSocket应用
  • 禁止uni小程序ios端上下拉伸(橡皮筋效果)
  • Docker使用复习(11.3)