一个函数对象:

时间:2016-09-09 22:04:02

标签: function object functor

一个功能对象:

  1. 是operator()是其成员函数的类的实例。
  2. 是运营商的一个类的实例 - >是一个成员函数。
  3. 是指向任何函数的指针
  4. 是类
  5. 的成员函数

    我的尝试:

    函数对象或函数(两个术语是同义词)只是可以被调用的任何对象,就好像它是一个函数一样。普通函数是函数对象,函数指针也是如此;更一般地说,定义operator()的类的对象也是如此。

    Functors(函数对象或函数)简单地放在object +()。

    在我看来,选项(3)是正确的,但我对选项(1)感到困惑,是真的吗?

      

    你能解释一下吗?

1 个答案:

答案 0 :(得分:0)

函数对象类的实例,它将括号运算符定义为成员函数。当函数对象用作函数时,只要调用函数,就会调用括号运算符。请考虑以下类定义:

class biggerThanThree 
 {
   public:
   bool operator () (int val)
   { return val > 3; }
};

如果我们创建类greaterThanThree的实例,每次使用函数调用语法引用此对象时,都会调用括号运算符成员函数。

参考:

  1. http://www.cplusplus.com/reference/functional/binary_function/
  2. https://msdn.microsoft.com/en-in/library/aa985932.aspx