【发布时间】:2020-02-08 12:48:35
【问题描述】:
我经常看到这个,我想知道它的作用/它的目的。
- 重载 operator() 有什么作用?
- 为什么人们通常会重载这个运算符?
示例
std::vector<double> operator()(int seed) const;
谢谢!
【问题讨论】:
标签: c++ class overloading parentheses
我经常看到这个,我想知道它的作用/它的目的。
示例
std::vector<double> operator()(int seed) const;
谢谢!
【问题讨论】:
标签: c++ class overloading parentheses
据我所知,Functors and matrix indexing 是最常见的用例。
矩阵索引
对于矩阵类,你可以这样做:
Matrix3x3 A;
A(1,2) = 2;
在这种情况下使用括号而不是括号的主要原因是括号运算符只接受一个参数,而括号运算符接受多个参数。
函子
如果你想让一个对象充当一个也可以存储信息的函数,你可以这样做:
Accumulator accumulate;
for(int i=0; i<20; ++i)
accumulate(i);
std::cout << accumulate.sum << std::endl;
在 C++ 中,您还会经常遇到 comparator objects 的函子,即使它们不存储信息。
【讨论】: