我最近发现,在C ++中,您可以以一种奇怪的方式重载“函数调用”运算符,其中您必须编写两对括号才能这样做:
class A {
int n;
public:
void operator ()() const;
};
然后以这种方式使用它:
A a;
a();
什么时候有用?
最佳答案
这可以用来创建"functors"对象,其作用类似于函数:
class Multiplier {
public:
Multiplier(int m): multiplier(m) {}
int operator()(int x) { return multiplier * x; }
private:
int multiplier;
};
Multiplier m(5);
cout << m(4) << endl;
上面打印
20
。上面链接的Wikipedia文章提供了更多示例。