码迷,mamicode.com
首页 > 编程语言 > 详细

C++函数包装器

时间:2015-05-11 22:06:29      阅读:338      评论:0      收藏:0      [点我收藏+]

标签:泛型   函数包装器   

函数包装器把函数包装起来:有以下特点
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();
}


C++函数包装器

标签:泛型   函数包装器   

原文地址:http://blog.csdn.net/huangshanchun/article/details/45647911

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!