如何直接评估函数?

时间:2013-08-14 11:49:05

标签: c++ class

标题可能没有任何意义,但我真的不知道如何解释这个。 我有一个叫做多项式的类,让我说我定义了一个名为p1的多项式,它是2x+4。我想要做的是直接计算p1(5)。我不想要double calculate (polynomial)之类的东西等我想用p1(x)来计算我的多项式。

我希望我的问题很清楚

2 个答案:

答案 0 :(得分:11)

重载函数调用操作符:

struct polynomial
{
    double a, b;
    polynomial(double m, double n) : a(m), b(n) { }  // represents "a * x + b"

    double operator()(double x) const
    {
        return a * x + b;
    }
};

用法:

polynomial p(2.5, 3.8);

double val = p(1.0);

答案 1 :(得分:5)

通过重载operator(),您可以像调用函数一样“调用”一个对象:

struct polynomial {
    int operator()(int x)
    {
        /* calculate */
    }
};

int main()
{
    polynomial p;
    int x = p(5);
}