一个函数对象:
A function object:
函数对象:
- 是一个 class 的实例,其中 operator () 是一个成员函数。
- 是一个 class 的实例,运算符 --> 是其成员函数。
- 是指向任意函数的指针
- 是class
的成员函数
我的尝试:
函数对象或函子(这两个术语是同义词)只是任何可以像调用函数一样调用的对象。普通函数是函数对象,函数指针也是;更一般地说,定义 operator().
的 class 的对象也是如此
仿函数(Function Objects or Functionals)就是把object + ().
我觉得选项(3)是正确的,但我对选项(1)感到困惑,这是真的吗?
Can you explain it, please?
一个函数对象是class的一个实例,它将括号运算符定义为成员函数。当函数对象用作函数时,每当调用函数时都会调用括号运算符。考虑以下 class 定义:
class biggerThanThree
{
public:
bool operator () (int val)
{ return val > 3; }
};
如果我们创建一个class biggerThanThree的实例,每次我们使用函数调用语法引用这个对象时,都会调用括号运算符成员函数。
参考:
函数对象:
- 是一个 class 的实例,其中 operator () 是一个成员函数。
- 是一个 class 的实例,运算符 --> 是其成员函数。
- 是指向任意函数的指针
- 是class 的成员函数
我的尝试:
函数对象或函子(这两个术语是同义词)只是任何可以像调用函数一样调用的对象。普通函数是函数对象,函数指针也是;更一般地说,定义 operator().
的 class 的对象也是如此仿函数(Function Objects or Functionals)就是把object + ().
我觉得选项(3)是正确的,但我对选项(1)感到困惑,这是真的吗?
Can you explain it, please?
一个函数对象是class的一个实例,它将括号运算符定义为成员函数。当函数对象用作函数时,每当调用函数时都会调用括号运算符。考虑以下 class 定义:
class biggerThanThree
{
public:
bool operator () (int val)
{ return val > 3; }
};
如果我们创建一个class biggerThanThree的实例,每次我们使用函数调用语法引用这个对象时,都会调用括号运算符成员函数。
参考: