首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

函数名作为函数的参数到底有什么好处?该如何处理

2012-02-06 
函数名作为函数的参数到底有什么好处??????http://dev.csdn.net/Develop/article/18/18162.shtm我们在传递

函数名作为函数的参数到底有什么好处??????
http://dev.csdn.net/Develop/article/18/18162.shtm


我们在传递函数的参数时,一般想到的都是一些诸如int,char,还有指针,引用之类

有没有想过将另外一个函数作为一个参数来传给调用函数呢?

也许这个功能比较少用,但真的很有效。

看看下面的例子

bool   up(int   a,int   b)   {return   b <a;}   //两个简单的函数,执行着相反的功能

bool   down(int   a,int   b)   {return   b> a;}


void   sort(int   array[],const   int   size,bool   (*comp)(int,int))

//看清楚喽,上面是一个函数的指针

{
。。。//你可以进行任意一个数组排序了

}


然后,就可以这样调用了。  


sort(myintarray,myintarraysize,up);
想想,看有没有其它的用途,比如说代替头痛的递归呢。


看完之后   我不知道递归到底有什么好处~!!!!????????


[解决办法]
对这个问题我的看法是:
对给定的区间里的值逐个进行函数所定义的功能。
事实上,这里更有效的应该是用函数对象,函数对象有更大的灵活性。如下:
class GT_cls
{
public:
GT_cls( std::size_t val = 0 ) : bound( val ) { }
bool operator() ( const string &s )
{
return s.size() > = bound ;
}
private:
std::string::size_type bound ;
};
这个函数对象的功能是实现字符串长度的比较,但是长度是可变的,这就是函数对象相对于函数的灵活之处。

热点排行