类中的重载函数调用运算符

Overload Function Call Operator in a Class

本文关键字:函数调用 运算符 重载      更新时间:2023-10-16

在我的教授给我的.h文件中,他写道

    double operator()(double x) const;

重载的要点是将 x 读作双精度值,并使用它来计算存储在类对象 Term 中的多项式。 我在类实现中提出的是

    double operator()(double x) const
    {   double result = 0.0;
        for (int i = 0; i < getSize(); i++)
            result += (getCoeff(i) * pow(x, getExponent(i)));
        return result;
    }

如何从应用程序调用它? 我尝试过不同的电话,例如

    Polynomial p;
    p.operator(x);

    Polynomial::operator(x);

    operator(x);

但在编译时总是出现错误。

通常的形式是调用它,就好像你的实例是一个函数一样:

double x = 3.1416;
Polynomial p;
double y = p(x);

或者,您可以显式调用运算符:

double x = 3.1416;
Polynomial p;
double y = p.operator()(x);

下面是一个简化的示例:

#include <iostream>
struct Foo
{
  double operator()(double x) const { return x*2; }
};
int main()
{
  Foo f;
  std::cout << f(2.5) << std::endl;
}