仿函数就是使对象使用行为看上去像个函数。
    函数的使用是这个样的
    Function(param1,param2,...)
    而对象的使用是这个样的
    Object.memberfunction(param1,param2...)
    而仿函数对象的使用是这个样的
    Object(param1,param2,...)
    这样我们可以看出,从外表上看,仿函数对象和函数是一个东西。呵呵,当然他们是不同的。他们一样不过是在使用的外形上一样罢了。
    一个仿函数类如下定义
    class ObjectFunction
    {
        .......
        public:
            返回的类型 operator() ([param1,param2,...]);
     };
     例1
     class ObjectFunction1
     {
          .......
          public:
              void operator() () { count << "No Param ObjectFuntion" << endl;
      };
      例2
      class ObjectFunction2
      {
           ........
           public:
               bool operator() (int x)
               {
                   count << "Have Param ObjectFuntion" << endl;
                   count << "This is ObjectFuntion's Param" << x << endl;
                   return true;
                }
         }
         仿函数的关键是要实现 operator() 运算符。      
	
posted on 2006-03-23 23:22 
walkspeed 阅读(5730) 
评论(7)  编辑 收藏 引用