c++ - 重载 "function call"运算符有什么用处?

标签 c++ operator-overloading functor function-object

我最近发现,在 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/

相关文章:

c# - 重载运算符==后,如何比较两个变量是否指向同一个对象?

时间:2019-03-08 标签:c++TemplatedFunctor

c++ - C++ 11 中带有选项 R 的正则表达式

c++ - 为什么我的 map 打印全为零?

C++运算符重载和隐式转换

arrays - 如何在 F# 中添加两个数值数组

haskell - 如何使仿函数的函数类型构造函数实例化?重复实例

c++ - 使用 cgal 进行增量空间搜索时修改仿函数变量

c++ - 如何捕捉键盘和鼠标事件?

c++ - 知道在 Visual Studio 上运行的是哪个版本的 c++