类中的重载函数调用操作符

时间:2013-10-03 05:35:34

标签: c++

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

    double operator()(double x) const;

重载点是将x作为double读入并用它来计算存储在类对象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);

但在编译时总是会出错。

1 个答案:

答案 0 :(得分:4)

通常的形式是将其称为您的实例是一个函数:

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;
}