函数名作为函数的参数到底有什么好处??????
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 ;
};
这个函数对象的功能是实现字符串长度的比较,但是长度是可变的,这就是函数对象相对于函数的灵活之处。