我最近发现,在 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 文章提供了更多实质性示例。
关于c++ - 重载 "function call"运算符有什么用处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2349867/