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