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

标签 c++ class overloading parentheses

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

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

示例

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

谢谢!

最佳答案

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 的仿函数,即使它们不存储信息。

关于c++ - 重载括号运算符有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58333668/

相关文章:

c++ - 为什么我的输入文件中的数字不进入我的数组 C++?

c++ - 有没有办法从 map::find() 获得 boost::optional 结果?

Javascript - 反射(reflect)封装的成员

C++:类/结构是否在编译时初始化过?

c++ - 我们可以重载 malloc() 吗?

java - Java 中的重载和多重调度

c++ - (重定义错误)在C++中从一个基类创建多个继承类

c++ - 什么需要在构造函数中,什么需要在 setter 函数中?

java - 类加载器返回 NoSuchMethodException 错误

c++ - 如何在 C++ 中创建一个方法的多个版本?