在Boost Signals库中,它们正在重载()运算符。这是C ++中的约定吗?对于回调等?我在同事的代码中看到了这一点(他恰好是Boost的忠实粉丝)。在所有的Boost优点中,这只会让我感到困惑。关于这种超载的原因有什么见解?
3 回答
交互式爱情
TA贡献1712条经验 获得超3个赞
它允许类充当函数。我在一个日志类中使用了该类,在该类中,调用应该是一个函数,但我希望该类有额外的好处。
所以像这样:
logger.log("Log this message");
变成这样:
logger("Log this message");
MM们
TA贡献1886条经验 获得超2个赞
许多人回答说它是函子,而没有说出函子比普通的旧函数更好的一个重要原因。
答案是函子可以具有状态。考虑一个求和函数-它需要保持运行总计。
class Sum
{
public:
Sum() : m_total(0)
{
}
void operator()(int value)
{
m_total += value;
}
int m_total;
};
- 3 回答
- 0 关注
- 429 浏览
添加回答
举报
0/150
提交
取消