可能的重复:
C ++函子及其用途。
为什么要覆盖操作员()?

我已经看到了 operator() 在STL容器上,但是它是什么?您什么时候使用它?

有帮助吗?

解决方案

该操作员将您的对象变成函数。 这是如何完成的好示例。

下一个示例演示了如何实现类以将其用作函子:

#include <iostream>

struct Multiply
{
    double operator()( const double v1, const double v2 ) const
    {
        return v1 * v2;
    }
};

int main ()
{
    const double v1 = 3.3;
    const double v2 = 2.0;

    Multiply m;

    std::cout << v1 << " * " << v2 << " = "
              << m( v1, v2 )
              << std::endl;
}

其他提示

它使对象像函数一样“可呼叫”。与功能不同,对象可以保持状态。实际上,一个函数可以使用静态局部局部来从虚弱的意义上执行此操作,但是随后该静态局部局部将在任何情况下通过任何线程在任何上下文中对该函数进行任何调用。

通过作为函数的对象,状态仅是该对象的成员,您可以拥有具有自己的成员变量集的同一类的其他对象。

BOOST :: BIND(基于旧的STL绑定器)的整体基于此概念。

该函数具有固定的签名,但通常您需要比签名中实际传递的更多参数来执行操作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top