函数和函数指针逻辑

时间:2014-04-16 00:58:25

标签: c++11 functor

class StrangeFunctor 
{ 
  public: 
    StrangeFunctor(int (*comp)(string, string)) 
     { 
       this->comp = comp; 
     } 
     int operator()(string str1, string str2) 
     { 
       return –comp(str1, str2); 
     } 
  private: 
   int (*comp)(string, string); 
} 

我只是好奇上面的代码实际上做了什么。假设函数被正确初始化并被赋予排序函数用于比较目的,我的预感是它颠倒了传递参数的顺序,但我不确定这是否正确以及为什么这是正确的。

1 个答案:

答案 0 :(得分:1)

这个仿函数接受一个函数指针,然后翻转该方法返回值的符号。

return –comp(str1, str2); 

如果像你所说的那样使用排序,它会反转原始函数指针给出的排序顺序。