operator()() 定义是什么?

5

很抱歉如果这个问题被举报了,但我似乎无法在网上轻松找到解决方案。如果我重载operator()(),那么这定义了什么行为?


4
这是函数调用运算符。你可能会发现这个链接很有用:https://dev59.com/62855IYBdhLWcg3wUCWC - chris
1个回答

8
operator()是函数调用运算符,即您可以将对应类型的对象用作函数对象。第二组括号包含参数列表(通常为空)。例如:
struct foo {
    int operator()() { return 17; };
};

int main() {
    foo f;
    return f(); // use object like a function
}

上面的示例只是展示了如何声明和调用运算符。实际应用中,运算符可能会访问成员变量。函数对象在标准C++库中被用作定制点。使用对象而不是函数指针的优点是函数对象可以附带数据。


在你的例子中,很难看出它如何有用。 - dreamlax
@dreamlax:我添加了一个简短的描述,但如果你想了解函数对象的用途,你可以在现有的答案中寻找。 - Dietmar Kühl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接