c++ - 在类中重载函数调用运算符

标签 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);

但是编译的时候总是报错。

最佳答案

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

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

关于c++ - 在类中重载函数调用运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19151537/

相关文章:

c++ - 在链接列表中设置指针=空指针和指针->下一个=空指针时,为什么会有不同的效果-C++

c++ - 如何让CPP核心功能成为我类的 friend

c++ - 在声明前使用静态常量成员

c++ - 如何转发声明在命名空间中的类

c++ - 这是使用递归的正确方法吗?

c++ - 如何将 C++ 对象绑定(bind)为 objective-c 中的属性?

c++ - std 库中有什么函数可以对 vector 进行二进制搜索并找到元素?

c++ - 在 C++ 中通过 const 引用返回接收函数复制值是否值得?

c++ - 如何在不同线程中处理同一个套接字?

c++ - 通过只读迭代器公开成员数据