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

What does overloading the parentheses operator do?

本文关键字:什么 作用 运算符 重载      更新时间:2023-10-16

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

  1. 重载运算符((有什么作用?
  2. 为什么人们通常会超载这个操作员?

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

谢谢!

据我所知,函子和矩阵索引是最常见的用例。

矩阵索引
对于矩阵类,您可以执行以下操作:

Matrix3x3 A;
A(1,2) = 2;

在这种情况下使用括号而不是括号的主要原因是括号运算符只接受一个参数,而括号运算符接受多个参数。

函子
如果希望对象充当也可以存储信息的函数,则可以执行以下操作:

Accumulator accumulate;
for(int i=0; i<20; ++i)
accumulate(i);
std::cout << accumulate.sum << std::endl;

在C++中,您还经常会遇到比较器对象的函子,即使它们不存储信息。