C++11 bind函数

C++11 bind函数

bind函数的用途

bind函数是一个函数适配器,接受一个callable object,生成一个新的callable object。
可以把原可调用对象(callable object)的参数预先绑定到给定的变量中(参数绑定),以生成新的可调用对象。

bind函数的使用

#include <iostream>
#include<functional>		//提供bind函数
//测试用函数
int minus(int a, int b)
{
	return a - b;
}
//测试用类
class A
{
public:
	void show(int a,int b)
	{
		std::cout << "Class A:" <<a<<" "<<b<< std::endl;
	}
};
int main()
{
	using namespace std::placeholders; // _1 _2
	//(1)绑定普通函数,其中 _1表示新函数的func1的第一个参数,_2表示新函数的第二个参数
	auto func1 = std::bind(minus, _1, _2);
	std::cout << func1(1, 2) << std::endl;//等价于调用minus(1,2),输出:-1
	//(2)交换参数位置 
	auto func2 = std::bind(minus, _2, _1);
	std::cout << func2(1, 2) << std::endl;//等价于调用minus(2,1),输出:1
	//(3)直接给参数赋值
	auto func3 = std::bind(minus, 10, _1);
	std::cout << func3(5) << std::endl;		//func3参数变为一个,输出:5
	auto func4 = std::bind(minus, 10, 3);
	std::cout << func4() << std::endl;		//func4参数变为无参,输出:7
	//(4)绑定成员函数
	A a;
	auto func5 = std::bind(&A::show, &a, 3, 9);
	func5();//输出:Class A: 3  9
	system("pause");
}

总结

bind函数的用途就是实现可调用类型的转换,起到一个可调用类型适配器的作用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值