为什么要覆盖operator()?

在Boost Signals库中,它们正在重载()运算符。


这是C ++中的约定吗?对于回调等?


我在同事的代码中看到了这一点(他恰好是Boost的忠实粉丝)。在所有的Boost优点中,这只会让我感到困惑。


关于这种超载的原因有什么见解?


慕运维8079593
浏览 413回答 3
3回答

交互式爱情

它允许类充当函数。我在一个日志类中使用了该类,在该类中,调用应该是一个函数,但我希望该类有额外的好处。所以像这样:logger.log("Log this message");变成这样:logger("Log this message");

MM们

许多人回答说它是函子,而没有说出函子比普通的旧函数更好的一个重要原因。答案是函子可以具有状态。考虑一个求和函数-它需要保持运行总计。class Sum{public:    Sum() : m_total(0)    {    }    void operator()(int value)    {        m_total += value;    }    int m_total;};
打开App,查看更多内容
随时随地看视频慕课网APP