C++函数包装器

函数包装器把函数包装起来:有以下特点
1.设计通用的函数执行接口,可以设置计数(函数执行次数)和关卡
2.函数包装器依赖于函数模板,实现通用泛型

3.函数代码可以内嵌在函数中

4.原理是函数指针实现的

以下给出C++简单的函数包装器案例

#include<iostream>
#include<functional>
using std::cout;
using std::endl;
using std::cin;
using std::function;


//定义好了一个函数包装器
template < typename T, typename F>
T function_wrapper(T t, F fun)
{
	return fun(t);
}
//定义好了一个函数包装器
template < typename T, typename F>
T function_wrapper(T t1, T t2,F fun)
{
	static int count = 0;
	count++;
	cout << "函数包装器执行" << count << "次数" << endl;

	return fun(t1,t2);
}
void main()
{

	double d_num = 1.1;
	//double(double)是声明函数类型 
	//允许函数内嵌
	//本质是函数指针
	// [] 标识要开辟一个函数
	function<double(double)> square_fun = [](double in_data)
	{
		return in_data*in_data;
	};
	//
	function<double(double)> cube_fun = [](double in_data)
	{
		return in_data*in_data*in_data;
	};
	function<int(int,int )> add_fun = [](int in_data1,int in_data2)
	{
		return in_data1+in_data2;
	};
	cout << function_wrapper(d_num, square_fun) << " " << function_wrapper(d_num, cube_fun) << endl;
	cout << function_wrapper(1,2,add_fun) << endl;
	cin.get();
}


  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值