重载括号运算符有什么作用?

时间:2019-10-11 02:59:28

标签: c++ class overloading parentheses

我经常看到这种情况,我想知道它的作用/目的。

  1. 重载operator()有什么作用?
  2. 为什么人们通常会重载此运算符?

示例

std::vector<double> operator()(int seed) const;

谢谢!

1 个答案:

答案 0 :(得分:6)

据我所知,

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的函子也经常遇到,即使它们不存储信息。