对象与成员函数指针 function+bind

本文详细介绍了C++中的function+bind概念,展示了如何使用模板类func将对象与成员函数绑定,并通过bind_f函数实现实例化。例子中涉及A类和B类的对象及其成员函数应用。
摘要由CSDN通过智能技术生成

function+bind的理解
function模板类的构造函数,把对象与成员函数绑定,重载了(),利用对象调用成员函数
bind模板函数,把对象与成员函数绑定,返回function对象,成员函数传参代码链接点这里

#include <iostream>

//A类
struct A{
	void f(){  std:: cout << "void A:: f()\n";  }		
};

//B类
struct B{
	void f(){ std:: cout << "void B:: f()\n"; }		
};

//func模板类
template<typename T>
class func{
private:
	T a;
	void (T::*f)();
public:	
	func( const T &a, void(T::*f)() ):a(a),f(f) {  } //参数为对象和成员函数指针的构造函数
	void operator()(){  (a.*f)( ); /* T类型对象a使用T类型的成员函数 */  }	//重载() 		
};

//bind_f模板函数// 返回func模板类对象
template<typename T>
func<T> bind_f(const T &a, void(T::*f)() ){	
	return func<T>(a, f ); //构造一个func对象
}

int main(int, char *[])
{
	A a;
	func<A> t1 = bind_f(a, &A::f ); //A类对象与A类的任一成员函数绑定//返回func类对象
	t1();
	/* B b;
	func<B> t2 = bind_f(b, &B::f );
	t2(); */
	
	return 0;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值